我要的是簡單的。我想將一個BitmapImage
放入C#中的Canvas
。我的應用基於WPF。我搜索了這個,我發現了類似的問題,但我找不到我在找什麼。
總之,我有這樣的:
BitmapImage img = new BitmapImage(new Uri("c:\\xyz.jpg"));
我想把這在畫布上,平均值不那麼重要,它可以是一個矩形或什麼的。
我要的是簡單的。我想將一個BitmapImage
放入C#中的Canvas
。我的應用基於WPF。我搜索了這個,我發現了類似的問題,但我找不到我在找什麼。
總之,我有這樣的:
BitmapImage img = new BitmapImage(new Uri("c:\\xyz.jpg"));
我想把這在畫布上,平均值不那麼重要,它可以是一個矩形或什麼的。
A BitmapImage
對象不能位於Canvas
之內,因爲它不是控件。你可以做的是從Canvas
派生你自己的類,並覆蓋OnRender()
方法來繪製你的位圖。基本上是這樣的:
class CanvasWithBitmap : Canvas
{
public CanvasWithBitmap()
{
_image = new BitmapImage(new Uri(@"c:\xyz.jpg"));
}
protected override void OnRender(DrawingContext dc)
{
dc.DrawImage(_image,
new Rect(0, 0, _image.PixelWidth, _image.PixelHeight));
}
private BitmapImage _image;
}
當然,你可能需要公開的文件路徑,並通過性能Canvas
內座標。如果你不想聲明自己的類只是繪製一個位圖,那麼你不能直接使用BitmapImage
類。顯示圖像的控制是Image
,讓我們試試這個:
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(@"c:\xyz.jpg");
bitmap.EndInit();
Image image = new Image();
image.Source = bitmap;
現在你可以把你想要的Canvas
內Image
控制。
似乎派生是唯一的解決方案。謝謝。 – rooter
@rooter不,不是。如果您有很多Image控件(使用相同的圖像),您可能會考慮推導出保存少量內存,但始終可以使用Image控件。 –
@mbeckish一個是無關緊要的,我想。添加一個位圖圖像不應該那麼複雜,該傢伙建議擴展畫布類。我正在尋找一個更簡單的解決方案,因爲我正在編寫一個已經編寫的代碼,我不想做出巨大的改變。 – rooter
@rooter對於該問題還有另一個答案,它將該位圖設置爲Canvas的背景。 –
@rooter - 請爲您的問題添加更多細節,以便我們不必猜測您會或不會接受的內容。 – mbeckish