小编low*_*wds的帖子

如何将WPF ScrollViewer的所有内容保存为图像

我有一个带有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);
    }
}
Run Code Online (Sandbox Code Playgroud)

目前正在生产PNG,但它只有ScrollViewer的当前可见部分.有什么方法可以让PNG包含所有内容,包括需要滚动到视图中的内容吗?

c# wpf image

0
推荐指数
1
解决办法
3287
查看次数

标签 统计

c# ×1

image ×1

wpf ×1