我想在我的WPF应用中手动更改按钮的背景。
我将图片导入到我的资源中,我想这样做:
MyButton.Background = MyProject.Properties.Resources.myImage;
但我收到错误:
无法将system.drawing.bitmap隐式转换为media.brush
我该怎么做?
答案 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);