繁体   English   中英

如何将图像转换为ImageSource

[英]How to convert Image to ImageSource

我不知道我是否在问正确的问题。 提前道歉 我正在将一些PNG编写到画布上,并且我还想同时将PNG复制到位图。 我希望PNG出现在位图上的位置与画布上的位置相同。

这是代码片段:

WorkingBMP = new RenderTargetBitmap(BOARD_WIDTH, BOARD_HEIGHT, 96, 96, PixelFormats.Pbgra32);

TreeFile = "pack://application:,,,/Images/" + TreeFile;

var image = new Image
{
    Source = new BitmapImage(new Uri(TreeFile))
};
image.Width = 10;
image.Height = 10;

Canvas.SetLeft(image, x );
Canvas.SetTop(image, y );

DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
drawingContext.DrawImage(image, new Rect(x, y, image.Width, image.Height));
drawingContext.Close();

WorkingBMP.Render(drawingVisual);

MainCanvas.Children.Add(image);

但是,它在此行上引发错误“无法从'System.Windows.Controls.Image'转换为'System.Windows.Media.ImageSource':

drawingContext.DrawImage(image,
                  new Rect(x, y, image.Width, image.Height));

如果我能以某种方式将图像转换为ImageSource还是解决所有错误,是否可以解决此错误?

谢谢!

如果直接绘制BitmapImage,它应该可以工作

var source = new BitmapImage(new Uri(TreeFile))

drawingContext.DrawImage(source,
                  new Rect(x, y, image.Width, image.Height));

Image是窗口上的控件。 Image.SourceImage检索到的实际位图。 这可能并不明显,但是您的代码确实暗示了这一点,因为您将Source设置为BitmapImage

您需要使用source属性才能获取实例化的实际BitmapImage

您可能需要强制转换,但这应该可以:

drawingContext.DrawImage(image.Source,
                  new Rect(x, y, image.Width, image.Height));

在这里试试

WorkingBMP = new RenderTargetBitmap(BOARD_WIDTH, BOARD_HEIGHT, 96, 96, PixelFormats.Pbgra32);

TreeFile = "pack://application:,,,/Images/" + TreeFile;

var image = new Image
{
    Source = new BitmapImage(new Uri(TreeFile))
};
image.Width = 10;
image.Height = 10;

Canvas.SetLeft(image, x );
Canvas.SetTop(image, y );

DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
drawingContext.DrawImage(new BitmapImage(new Uri(TreeFile)), new Rect(x, y, image.Width, image.Height));
drawingContext.Close();

WorkingBMP.Render(drawingVisual);

MainCanvas.Children.Add(image);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM