这件事一直让我发疯。
我有一个 Visiblox 图表。我目前正在使用以下代码将其导出为 PNG:
var chart = this.CalibrationChartVisibility == Visibility.Visible ? this.calibrationChart : this.residualChart;
var transform = chart.LayoutTransform;
chart.LayoutTransform = null;
var width = (int)chart.ActualWidth;
var height = (int)chart.ActualHeight;
var rtb = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);
rtb.Render(chart);
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
var stream = new MemoryStream();
encoder.Save(stream);
stream.Position = 0;
chart.LayoutTransform = transform;
return stream.ToArray();
我得到这样的东西:
但现在我还需要将其导出为 JPEG。我认为这很简单,只需更改编码器,但这就是我得到的:
这: http ://www.grumpydev.com/2009/01/03/taking-wpf-screenshots/
这: 从控制视图中获取位图图像
和 ervey 对这篇文章的建议: 如何使用 JpegBitmapEncoder 保存图像
或这个: 将 WPF InkCanvas 保存为 JPG - 图像被裁剪
以及我脑海中闪过的一切,但结果还是一样。
一定有什么我忽略了,但我不知道它是什么。