C# 在C语言中在画布中放置位图#
可能重复:C# 在C语言中在画布中放置位图#,c#,canvas,C#,Canvas,可能重复: 我想要的很简单。我想将位图图像放入C#中的画布。我的应用程序基于WPF。我搜索了这个,我发现了类似的问题,但我找不到我要找的 简言之,我有以下几点: BitmapImage img = new BitmapImage(new Uri("c:\\xyz.jpg")); 我想把它放在画布上,平均值没有那么重要,它可以是一个矩形或任何东西。一个位图图像对象不能放在画布内,因为它不是控件。您可以做的是从Canvas派生您自己的类,并重写OnRender()方法来绘制位图。基本上是这样的:
我想要的很简单。我想将
位图图像
放入C#中的画布
。我的应用程序基于WPF。我搜索了这个,我发现了类似的问题,但我找不到我要找的
简言之,我有以下几点:
BitmapImage img = new BitmapImage(new Uri("c:\\xyz.jpg"));
我想把它放在画布上,平均值没有那么重要,它可以是一个矩形或任何东西。一个
位图图像
对象不能放在画布
内,因为它不是控件。您可以做的是从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;
}
当然,您可能需要通过属性公开画布中的文件路径和坐标。如果您不想仅为了绘制位图而声明自己的类,则不能直接使用BitmapImage
类。显示图像的控件是Image
,让我们尝试以下操作:
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(@"c:\xyz.jpg");
bitmap.EndInit();
Image image = new Image();
image.Source = bitmap;
现在你可以把图像
控件放在画布
@mbeckish中你想要的地方,我认为这是不相关的。只添加位图图像应该不会那么复杂,他建议扩展canvas类。我正在寻找一个更简单的解决方案,因为我正在编写一个已经编写好的代码,我不想做巨大的更改。@rooter这个问题还有另一个答案,它将位图设置为画布的背景。@rooter-请为您的问题添加更多细节,这样我们就不必猜测您会接受或不会接受的内容。@Adriano该选项也不起作用,因为我想将其放置在特定区域,但不是背景图片。添加另一个画布,把这张图片放在画布上你喜欢的地方,然后用位图作为背景。看起来衍生是唯一的解决方案。谢谢。@rooter不,不是。如果您有许多图像控件(具有相同的图像),您可以考虑导出以节省少量内存,但您可以始终使用图像控件。