3

可能重复:
如何在 WPF 中将位图渲染到画布中?

我想要的很简单。我想将 aBitmapImage放入CanvasC# 中。我的应用程序基于 WPF。我搜索了这个,我发现了类似的问题,但我找不到我要找的东西。

简而言之,我有这个:

BitmapImage img = new BitmapImage(new Uri("c:\\xyz.jpg"));

我想把它放在画布上,平均值并不重要,它可以是一个矩形或其他任何东西。

4

1 回答 1

1

BitmapImage对象不能定位在 a 中,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;
}

当然,您可能需要在Canvasthrough 属性中公开文件路径和坐标。如果您不想声明自己的类只是为了绘制位图,那么您不能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.

于 2012-10-12T20:46:36.653 回答