WPF无法将system.drawing.bitmap隐式转换为media.brush

时间:2013-12-15 22:28:00

标签: c# wpf xaml

我想在我的WPF应用中手动更改按钮的背景。

我将图片导入到我的资源中,我想这样做:

MyButton.Background = MyProject.Properties.Resources.myImage;

但我收到错误:

  

无法将system.drawing.bitmap隐式转换为media.brush

我该怎么做?

2 个答案:

答案 0 :(得分:8)

您应该先阅读有关画笔的here

然后使用ImageBrush,如下所示:

MyButton.Background = new ImageBrush(...);

(或者,也许,将刷子放入资源......)

<强>更新

您可以找到如何从位图easilly创建imageSource。例如,here。像:

var bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(MyProject.Properties.Resources.myImage.GetHbitmap(),
                                  IntPtr.Zero,
                                  Int32Rect.Empty,
                                  BitmapSizeOptions.FromEmptyOptions());
MyButton.Background = new ImageBrush(bitmapSource);

答案 1 :(得分:5)

在WPF应用程序中,您通常不会像在WinForms中那样添加图像资源。

而是将图像文件直接添加到Visual Studio项目中,就像任何其他文件一样。如果有多个图像,将它们放在项目的子文件夹中可能是有意义的(例如称为“图像”)。该文件的Build Action必须设置为Resource(这是图像文件的默认设置)。

现在,您可以从Pack URI创建BitmapImage到该文件。

最后,您从ImageBrush创建BitmapImage以设置Background属性。

var uri = new Uri("pack://application:,,,/images/myImage.jpg");
var image = new BitmapImage(uri);
MyButton.Background = new ImageBrush(image);