现在做个一个截图软件,需要实现任意形状的截图。就是用鼠标在屏幕上随便绘制一个封闭的形状,然后把形状内的像素不变。不在形状内的部分设置为白色。这样,白色作为背景,看上去就像截取了一个任意形状的图像。
我现在采取的方法是,在鼠标绘制的时候,把鼠标移动的的轨迹的所有点保存在一个数组中。然后调用GDI CreatePolygonRgn根据保存下来的这些点创建一个多边形区域。区域创建以后,调用了一个函数GetRgnBox取得了这个多边形区域的外接矩形。接着在循环逐个对像素点调用函数PtInRegion 判断是否是在多边形区域内。若不在,调用SetPixel将这个位置的像素点设置为RGB值为白色的像素。这样可以达到我的最终目的,但是这样实现的效果欠佳,屏幕上总是像素绘制的痕迹。我苦思良久没有结果,小弟是初学者,在CSDN没有混到什么分数,各位大侠,如果有更好的方法,请告知小弟,感激不尽!
附注:就是想实现windows7 系统附件截图工具中的"任意格式截图",这个功能。
请大家多多指点!鞠躬!windows截图VCGDI