可能是重复问题:
如何在WPF中将位图渲染到画布中?
我想要的很简单。我想在C#中将一个BitmapImage
放入Canvas
中。我的应用程序基于WPF。我搜索了这个问题并找到了类似的问题,但我没有找到我要找的。
简而言之,我有以下代码:
BitmapImage img = new BitmapImage(new Uri("c:\\xyz.jpg"));
我希望将此内容放入画布中,意义并不重要,可以是矩形或其他任何形状。
可能是重复问题:
如何在WPF中将位图渲染到画布中?
我想要的很简单。我想在C#中将一个BitmapImage
放入Canvas
中。我的应用程序基于WPF。我搜索了这个问题并找到了类似的问题,但我没有找到我要找的。
简而言之,我有以下代码:
BitmapImage img = new BitmapImage(new Uri("c:\\xyz.jpg"));
我希望将此内容放入画布中,意义并不重要,可以是矩形或其他任何形状。
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
内的任何位置。