1、选取要绑定的控件名称
2、设置保存图片的类型和格式、路径
//保存图片处理事件
private void Save_image_Click(object sender, RoutedEventArgs e)
{
string outputfile="";//文件保存路径声明
System.Windows.Forms.SaveFileDialog dialog = new System.Windows.Forms.SaveFileDialog(); //允许dialog来保存到一个地址
dialog.Filter = "Png Files|*.BMP"; // 文件保存类型
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) //将ok返回默认用户公共对话框
{
outputfile=dialog.FileName; //获取文件路径
}
GetPicFromControl(plotter, "BMP", outputfile);//要截取的控件名称 输出图片的格式 输出图片的路径
}
3、保存图片
//截屏函数
private void GetPicFromControl(FrameworkElement element, String type, String outputPath)
{
//96为显示器DPI
var bitmapRender = new RenderTargetBitmap((int)element.ActualWidth, (int)element.ActualHeight+100, 96, 96, PixelFormats.Pbgra32);//位图 宽度 高度 水平DPI 垂直DPI 位图的格式 高度+100保证整个图都能截取
//控件内容渲染RenderTargetBitmap
bitmapRender.Render(element);
BitmapEncoder encoder = null;
//选取编码器
switch (type.ToUpper())
{
case "BMP":
encoder = new BmpBitmapEncoder();
break;
case "GIF":
encoder = new GifBitmapEncoder();
break;
case "JPEG":
encoder = new JpegBitmapEncoder();
break;
case "PNG":
encoder = new PngBitmapEncoder();
break;
case "TIFF":
encoder = new TiffBitmapEncoder();
break;
default:
break;
}
//对于一般的图片,只有一帧,动态图片是有多帧的。
encoder.Frames.Add(BitmapFrame.Create(bitmapRender));//添加图
if (!Directory.Exists(System.IO.Path.GetDirectoryName(outputPath)))
Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath));
using (var file = File.Create(outputPath))//存储文件
encoder.Save(file);
}