我想通过后面的代码将网格背景转换为图像,如何做到这一点 -
我试过这个 -
ImageBrush gridBackground = (ImageBrush)(((Grid)sender).Background);
System.Windows.Controls.Image gridBackImage = new System.Windows.Controls.Image();
gridBackImage.Source = gridBackground.ImageSource;
它给出了错误 -
无法转换类型为System.Windows.Media.SolidColorBrush'的对象。输入' System.Windows.Media.ImageBrush'。
答案 0 :(得分:1)
我觉得你需要更多地澄清你的要求,因为你可能尝试的可能是错误的做法。我觉得你没有将任何图像设置为网格的背景,而只是一种颜色。
因此,将背景设置为颜色将返回SolidColorBrush,而不是Image,即ImageBrush。
如果您已将其设置为图像背景,那么您的代码将正常工作。但问题是你打算用gridBackImage
做什么?因为我觉得我们正在将它转换成不必要的东西。如果你说你打算做什么,最好解决。
var grid = sender as Grid;
Image gridBackImage =new Image();
gridBackImage.Source = grid.Background.ImageSource;
答案 1 :(得分:0)
ImageBrush myBrush = new ImageBrush();
Image image = new Image();
image.Source = new BitmapImage(
new Uri(
"pack://application:,,,/MyClassLibrary;/Images/Image1.jpg"));
myBrush.ImageSource = image.Source;
Grid grid = (Grid)sender;
grid.Background = myBrush;
答案 2 :(得分:0)
通过在网格中添加以下代码,您可以轻松地在xaml中实现
<Grid>
<Grid.Background>
<ImageBrush ImageSource="/MyProject;component/Images/bg.png"/>
</Grid.Background>
</Grid>
留给你的是,在解决方案中添加一个名为'Images'的文件夹,并将现有文件添加到新的'Images'文件夹中,在这种情况下称为'bg.png'
答案 3 :(得分:0)
你应该能够像Saritha.S.R的回答一样:
ImageBrush myBrush = (ImageBrush)(((Grid)sender).Background);
Image image = new Image();
image.Source = myBrush.ImageSource;
这就是你追求的目标吗?
修改强>:
您的修改:
Unable to cast object of type 'System.Windows.Media.SolidColorBrush' to type System.Windows.Media.ImageBrush'.
表示您确实没有将图像设置为背景。你需要这样的东西:
<Grid.Background>
<ImageBrush ImageSource="YourBackgroundImage.jpg"/>
</Grid.Background>
或代码背后:
ImageBrush myBrush = new ImageBrush();
Image image = new Image();
image.Source = new BitmapImage(
new Uri("pack://application:,,,/YourProject;component/YourBackgroundImage.jpg"));
myBrush.ImageSource = image.Source;
yourGrid.Background = myBrush;
为此工作。您无法从SolidColorBrush中获取图像
答案 4 :(得分:0)
您可以将背景转换为ImageBrush而不是Image。
ImageBrush img = (Grid_Image.Background as ImageBrush);
答案 5 :(得分:0)
请检查图像背景是否设置为ImageBrush,如
<Grid Height="300" Width="100" x:Name="Grid_Image">
<Grid.Background>
<ImageBrush ImageSource="ms-appx:///Assets/SmallLogo.scale-100.png"/>
</Grid.Background>
</Grid>
然后你可以像你提到的那样抛出代码。
ImageBrush im = ((ImageBrush)(((Grid)sender).Background);
Image gridBackImage =new Image();
gridBackImage.Source = im.ImageSource;
答案 6 :(得分:0)
解决了,我的代码是 - ImageBrush gridBackground;
if (((Grid)sender).Children.Count > 0)
{
gridBackground = (ImageBrush)(((Grid)sender).Background);
System.Windows.Controls.Image gridBackImage = new System.Windows.Controls.Image();
gridBackImage.Source = gridBackground.ImageSource;
ImageCar.Source = gridBackImage.Source;
}