目录

WPF将控件转化为图像

目录

在项目中需要将datagrid这个控件转化成图像输出,思考了几种办法:

1.可以对屏幕截取,然后再根据控件相对于屏幕的坐标再次截取,即可取得控件截图。这种方法限制性很大,如图像的分辨率被限死,同时,如果控件不在屏幕中显示的话那么就无法进行截图。

2.查看datagrid源码,重新绘制图形。这个办法只要掌握,其实一劳永逸。只不过需要时间过长,略显复杂,项目中需要一种简洁的方法来操作。

3.有自带方法绘制控件。经过查阅资料,整理代码如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
/// <summary>
/// 可以对WPF中的控件抓取为图片形式.
/// </summary>
/// <param name="p_FrameworkElement">控件对象</param>
/// <param name="p_FileName">生成图片的路径</param>
private void SaveToImage(FrameworkElement p_FrameworkElement, string p_FileName)
{
    System.IO.FileStream fs = new System.IO.FileStream(p_FileName, System.IO.FileMode.Create);
    RenderTargetBitmap bmp = new RenderTargetBitmap((int)p_FrameworkElement.ActualWidth, (int)p_FrameworkElement.ActualHeight, 96.0, 96.0, PixelFormats.Pbgra32);
    bmp.Render(p_FrameworkElement);
    BitmapEncoder encoder = new PngBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(bmp));
    encoder.Save(fs);
    fs.Close();
    fs.Dispose();
}

使用这样的方法不仅大大缩短了开发时间,还可以根据要求,隐藏控件或者自定义控件转化为图像的属性。