【发布时间】:2014-09-16 01:00:15
【问题描述】:
我有一个带有 ScrollViewer 控件的 WPF 窗口,其中包含许多垂直扩展的子控件。当用户单击位于 ScrollViewer 底部的按钮时,我希望将所有内容(当前可见和不可见)保存为图像。
我正在使用以下代码,这些代码从示例中改编而来,展示了如何保存窗口的内容:
public static void SaveForm(ScrollViewer container, string filename)
{
const int dpi = 96;
var rtb = new RenderTargetBitmap(
(int)container.ExtentWidth, //width
(int)container.ExtentHeight, //height
dpi, //dpi x
dpi, //dpi y
PixelFormats.Pbgra32 // pixelformat
);
rtb.Render(container);
SaveRTBAsPNG(rtb, filename);
}
private static void SaveRTBAsPNG(RenderTargetBitmap bmp, string filename)
{
var enc = new System.Windows.Media.Imaging.PngBitmapEncoder();
enc.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(bmp));
using (var stm = System.IO.File.Create(filename))
{
enc.Save(stm);
}
}
目前正在生成一个 PNG,但它只有 ScrollViewer 的当前可见部分。有什么方法可以让 PNG 包含所有内容,包括需要滚动到视图中的内容?
【问题讨论】: