怎么实现任意形状图形的截取?

jlcm1234567 2013-01-29 08:43:55
现在做个一个截图软件,需要实现任意形状的截图。就是用鼠标在屏幕上随便绘制一个封闭的形状,然后把形状内的像素不变。不在形状内的部分设置为白色。这样,白色作为背景,看上去就像截取了一个任意形状的图像。
我现在采取的方法是,在鼠标绘制的时候,把鼠标移动的的轨迹的所有点保存在一个数组中。然后调用GDI CreatePolygonRgn根据保存下来的这些点创建一个多边形区域。区域创建以后,调用了一个函数GetRgnBox取得了这个多边形区域的外接矩形。接着在循环逐个对像素点调用函数PtInRegion 判断是否是在多边形区域内。若不在,调用SetPixel将这个位置的像素点设置为RGB值为白色的像素。这样可以达到我的最终目的,但是这样实现的效果欠佳,屏幕上总是像素绘制的痕迹。我苦思良久没有结果,小弟是初学者,在CSDN没有混到什么分数,各位大侠,如果有更好的方法,请告知小弟,感激不尽!
附注:就是想实现windows7 系统附件截图工具中的"任意格式截图",这个功能。
请大家多多指点!鞠躬!
...全文
725 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaokai115 2013-01-29
  • 打赏
  • 举报
回复
SetPixel肯定很慢,用SelectClipRgn()和BitBlt()比较快些,网上再找找吧。
ppsharp 2013-01-29
  • 打赏
  • 举报
回复
还没注意过win7的截图有这个功能呢,刚去看了一下,果真有。不过我也不会。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧