WPF 截取控件
发布日期:2021-05-04 13:34:08 浏览次数:18 分类:技术文章

本文共 3164 字,大约阅读时间需要 10 分钟。

public static class ToBitmapTool    {        ///         /// 截图转换成bitmap        ///         ///         /// 默认控件宽度        /// 默认控件高度        /// 默认0        /// 默认0        /// 
public static Bitmap ToBitmap(this FrameworkElement element, int width = 0, int height = 0, int x = 0, int y = 0) { if (width == 0) width = (int)element.ActualWidth; if (height == 0) height = (int)element.ActualHeight; var rtb = new RenderTargetBitmap(width, height, x, y, System.Windows.Media.PixelFormats.Default); rtb.Render(element); var bit = BitmapSourceToBitmap(rtb); //测试代码 DirectoryInfo d = new DirectoryInfo(System.IO.Path.Combine(Directory.GetCurrentDirectory(), "Cache")); if (!d.Exists) d.Create(); bit.Save(System.IO.Path.Combine(d.FullName, "控件截图.png")); return bit; } /// /// BitmapSource转Bitmap /// /// ///
public static Bitmap BitmapSourceToBitmap(this BitmapSource source) { return BitmapSourceToBitmap(source, source.PixelWidth, source.PixelHeight); } /// /// Convert BitmapSource to Bitmap /// /// ///
public static Bitmap BitmapSourceToBitmap(this BitmapSource source, int width, int height) { Bitmap bmp = null; try { PixelFormat format = PixelFormat.Format24bppRgb; /*set the translate type according to the in param(source)*/ switch (source.Format.ToString()) { case "Rgb24": case "Bgr24": format = PixelFormat.Format24bppRgb; break; case "Bgra32": format = PixelFormat.Format32bppPArgb; break; case "Bgr32": format = PixelFormat.Format32bppRgb; break; case "Pbgra32": format = PixelFormat.Format32bppArgb; break; } bmp = new Bitmap(width, height, format); BitmapData data = bmp.LockBits(new System.Drawing.Rectangle(System.Drawing.Point.Empty, bmp.Size), ImageLockMode.WriteOnly, format); source.CopyPixels(Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride); bmp.UnlockBits(data); } catch { if (bmp != null) { bmp.Dispose(); bmp = null; } } return bmp; } }
System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();            if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)            {                string outDir = folderBrowserDialog.SelectedPath;                //CutScreen名称                System.Drawing.Bitmap bitmap= ToBitmapTool.ToBitmap(CutScreen);                bitmap.Save(System.IO.Path.Combine(outDir, Guid.NewGuid().ToString() + ".png"));                AutoCloseFrom ac = new AutoCloseFrom();                ac.Show();            }

 

上一篇:mvc+webservice+存储过程分页
下一篇:MySql事务详解

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年03月12日 06时05分45秒