WPF实现屏幕异形区域截图。可拖动锚点指定不规则屏幕区域

屏幕监控程序,需要实现用户自定义多边形区域变动监控。实现多边形区域屏幕截图,才能进行变动对比。

思路:

  1. 先获取多边形对应的外部矩形,这样可以最小化截取,效率高,速度快
  2. 根据多边形,生成Region对象。用来裁剪截图
  3. 采用ExcludeClip方式,填充矩形,这样可以保留Region内部图像

关键代码如下,



其中,_si是截图参数。
特别注意:Clip只对绘图操作有用,Copy操作不起作用!!
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap((int)_si.bmpWidth, (int)_si.bmpHeight);

System.Drawing.Graphics g1 = System.Drawing.Graphics.FromImage(bmp);

// region截图
var gp = new GraphicsPath();

gp.AddPolygon(_pf);

g1.ExcludeClip(new System.Drawing.Region(gp));

g1.CopyFromScreen((int)_si.sourceX, (int)_si.sourceY, 0, 0, new System.Drawing.Size((int)_si.bmpWidth, (int)_si.bmpHeight));//目标起始点是0,0

// 外部用纯色 不常用的颜色
g1.FillRectangle(new System.Drawing.SolidBrush(System.Drawing.Color.Green),
0, 0, bmp.Width, bmp.Height);

购买、定制 | QQ | 留言 | Top
page updated: 2022-05-22