2013-12-15 32 views
-1

我想在我的WPF應用程序中手動更改按鈕的背景。WPF不能隱式地將system.drawing.bitmap轉換爲media.brush

我有一個圖像導入到我的資源,我想做的事:

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

但我得到的錯誤:

cannot implicitly convert system.drawing.bitmap to media.brush

我怎樣才能做到這一點?

+0

背景是錯誤的屬性,你需要像BackgroundImage – CSharpie

+1

@CSharpie你錯了,'背景'是正確的屬性。您需要將其設置爲「ImageBrush」。 – Clemens

+0

哦,好的。學會了今天的新東西:) – CSharpie

回答

6

您應該首先閱讀有關刷子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); 
+0

這是行不通的,因爲myImage的類型是System.Drawing.Bitmap。 – Clemens

+0

我已經添加了將位圖轉換爲源代碼的方法之一 – JleruOHeP

5

在WPF應用程序中,通常不會像在WinForms中那樣添加圖像資源。

相反,您將圖像文件直接添加到Visual Studio項目中,就像任何其他文件一樣。如果有多個圖像,則將它們放入項目的子文件夾中(例如稱爲「圖像」)可能有意義。該文件的Build Action必須設置爲Resource(這是圖像文件的默認設置)。

現在您可以創建一個BitmapImagePack URI到該文件。

最後,您將從BitmapImage創建一個ImageBrush以設置Background屬性。

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