WPF下保存控件内容为图片

16 篇文章 8 订阅

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);
        }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值