使用RenderTargetBitmap将空白而不是从Canvas保存到PNG的实际Image元素? (其他元素已正常保存)

时间:2019-05-22 17:37:54

标签: c# wpf image canvas render

我试图将绘制了画布,绘制了一些多边形,文本块和图像的画布保存到PNG文件中,因为它在屏幕上显示了。问题是,尽管已正确显示了已保存文件中的所有其他元素,但缺少(Windows.Controls)Image元素。这很奇怪,我不知道如何解决。所有图像只能在画布中正确显示。

我试图将其保存为JPEG而不是PNG,但结果是相同的。

RenderTargetBitmap rtb = new RenderTargetBitmap((int)can.Width, (int)can.Height, 96d, 96d, PixelFormats.Default);
can.Measure(new Size(can.Width, can.Height));
can.Arrange(new Rect(new Size(can.Width,can.Height)));
rtb.Render(can);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
using (FileStream fs = File.Create(path))
{
encoder.Save(fs);
}

编辑 我找到了一种解决方法,如何将“画布”上的图像保存到文件中。不幸的是,(Windows.Controls)Image元素存在某种错误,即使将其呈现在画布上,也无法保存。那么我如何保存它呢?我没有将Image元素直接放入我的Canvas中,而是将另一个Canvas元素放入了我的Canvas中,它的大小与Image元素相同,并且背景设置为我要渲染的图像。现在可以了。

要注意的是,当您拥有长宽比未知的图像并且想要例如将宽度设置为某个固定值时,在Image元素上会自动设置高度。在此,您需要使用Canvas后台解决方法自己计算另一个尺寸。

0 个答案:

没有答案