在C#中将位图放置在canvas中
可能重复:
如何在WPF中将位图渲染到canvas?
我想要的很简单。 我想在C#中将BitmapImage
放入Canvas
中。 我的应用程序基于WPF。 我搜索了这个,我发现了类似的问题,但我找不到我想要的东西。
总之,我有这个:
BitmapImage img = new BitmapImage(new Uri("c:\\xyz.jpg"));
我想把它放在canvas上,意思不是那么重要,它可以是一个矩形或其他什么。
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;
现在,您可以将Image
控件放在Canvas
。