3

重複の可能性:
WPF でビットマップをキャンバスにレンダリングする方法は?

欲しいものはシンプル。C# でaBitmapImageを aに配置したい。Canvas私のアプリは WPF に基づいています。これを検索したところ、同様の質問が見つかりましたが、探しているものが見つかりませんでした。

要するに、私はこれを持っています:

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

そして、これをキャンバスに入れたいのですが、平均はそれほど重要ではなく、長方形でも何でもかまいません。

4

1 に答える 1

1

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

于 2012-10-12T20:46:36.653 に答える