我想在我的WPF應用程序中手動更改按鈕的背景。WPF不能隱式地將system.drawing.bitmap轉換爲media.brush
我有一個圖像導入到我的資源,我想做的事:
MyButton.Background = MyProject.Properties.Resources.myImage;
但我得到的錯誤:
cannot implicitly convert system.drawing.bitmap to media.brush
我怎樣才能做到這一點?
我想在我的WPF應用程序中手動更改按鈕的背景。WPF不能隱式地將system.drawing.bitmap轉換爲media.brush
我有一個圖像導入到我的資源,我想做的事:
MyButton.Background = MyProject.Properties.Resources.myImage;
但我得到的錯誤:
cannot implicitly convert system.drawing.bitmap to media.brush
我怎樣才能做到這一點?
您應該首先閱讀有關刷子here。
然後用ImageBrush
,像這樣:
MyButton.Background = new ImageBrush(...);
(或者,也許,把刷到資源...)
UPDATE
你可以找到如何easilly從位圖創建imageSource。例如,here。像:
var bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(MyProject.Properties.Resources.myImage.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
MyButton.Background = new ImageBrush(bitmapSource);
在WPF應用程序中,通常不會像在WinForms中那樣添加圖像資源。
相反,您將圖像文件直接添加到Visual Studio項目中,就像任何其他文件一樣。如果有多個圖像,則將它們放入項目的子文件夾中(例如稱爲「圖像」)可能有意義。該文件的Build Action
必須設置爲Resource
(這是圖像文件的默認設置)。
現在您可以創建一個BitmapImage
從Pack URI到該文件。
最後,您將從BitmapImage
創建一個ImageBrush
以設置Background
屬性。
var uri = new Uri("pack://application:,,,/images/myImage.jpg");
var image = new BitmapImage(uri);
MyButton.Background = new ImageBrush(image);
背景是錯誤的屬性,你需要像BackgroundImage – CSharpie
@CSharpie你錯了,'背景'是正確的屬性。您需要將其設置爲「ImageBrush」。 – Clemens
哦,好的。學會了今天的新東西:) – CSharpie