WPF编程,将控件所呈现的内容保存成图像的一种方法。

版权声明:我不生产代码,我只是代码的搬运工。 https://blog.csdn.net/qq_43307934/article/details/87278138

实现只对控件进行截图,可以利用RenderTargetBitmap类获取Visual对象的视觉效果,从而实现对控件截图效果。

参考地址:https://www.cnblogs.com/TianFang/archive/2012/10/07/2714140.html

例子:这里将控件的显示内容,保存为PNG的图片到本地。 

1、代码

        //定义一个文件类型的枚举
        public enum ImageFormat
        {
            JPG, BMP, PNG, GIF, TIF
        }
        //转为图片并保存
        public void GenerateImage(BitmapSource bitmap, ImageFormat format, Stream destStream)
        {
            BitmapEncoder encoder = null;

            switch (format)
            {
                case ImageFormat.JPG:
                    encoder = new JpegBitmapEncoder();
                    break;
                case ImageFormat.PNG:
                    encoder = new PngBitmapEncoder();
                    break;
                case ImageFormat.BMP:
                    encoder = new BmpBitmapEncoder();
                    break;
                case ImageFormat.GIF:
                    encoder = new GifBitmapEncoder();
                    break;
                case ImageFormat.TIF:
                    encoder = new TiffBitmapEncoder();
                    break;
                default:
                    throw new InvalidOperationException();
            }

            encoder.Frames.Add(BitmapFrame.Create(bitmap));
            encoder.Save(destStream);
        }

 2、调用

其中此函数有五个参数:

 分别是图片的宽、图片的高、水平分辨率、垂直分辨率、位图的格式。

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            RenderTargetBitmap rtb = new RenderTargetBitmap((int)this.Width, (int)this.Height, 96, 96, PixelFormats.Pbgra32);
            rtb.Render(allview);

            using (Stream fs = File.Create(@"D:\test.png"))
            {
                GenerateImage(rtb, ImageFormat.PNG, fs);
            }
        }

猜你喜欢

转载自blog.csdn.net/qq_43307934/article/details/87278138