2013-02-26 113 views
2

我創建了一個新的WPF控件,添加了一個Rectangle,並且它的工作正常,它的繪製方式應該是這樣。但我不能用真實的圖像繪製矩形。用圖像填充WPF矩形

BitmapImage bi = GetImage(); 
ImageBrush imgBrush= new ImageBrush(bi); 

this.rectangle.Fill = imgBrush; 

但這段代碼只是使矩形透明,除了筆畫。

這是GetImage()方法:

BitmapImage bi; 

using (MemoryStream ms = new MemoryStream()) 
{ 
    bi = new BitmapImage(); 
    bi.CacheOption = BitmapCacheOption.OnLoad; 

    texture.SaveAsPng(ms, texture.Width, texture.Height); 

    ms.Seek(0, SeekOrigin.Begin); 

    bi.BeginInit(); 
    bi.StreamSource = ms; 
    bi.EndInit(); 

    ms.Close(); 
} 
return bi; 

textureTexture2D類,即此代碼之前作出。

如果我在此返回Bitmap insted BitmapImage,然後保存該Bitmap圖片繪製正確。

謝謝您的幫助

+0

任何人都知道爲什麼它不工作? – user1806687 2013-02-28 15:16:26

回答

4

這是轉換Bitmap to BitmapImage正確的方法:

using(MemoryStream memory = new MemoryStream()) 
{ 
    bitmap.Save(memory, ImageFormat.Png); 
    memory.Position = 0; 
    BitmapImage bitmapImage = new BitmapImage(); 
    bitmapImage.BeginInit(); 
    bitmapImage.StreamSource = memory; 
    bitmapImage.CacheOption = BitmapCacheOption.OnLoad; 
    bitmapImage.EndInit(); 
} 

感謝 「帕維爾Lesnikowski」,他發表了以下主題中的anwser:

Load a WPF BitmapImage from a System.Drawing.Bitmap

+0

+1提供信息來源。 – Ujjwal 2013-08-27 09:56:33