在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