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
。