矩形抓图实现了怎么把它改成椭圆形

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:32:33
用DELPHI编写屏幕捕捉程序,在局部抓图的时候如果矩形的实现了, 怎么改可以把他改成抓椭圆形状的呢, 还有就是任意多边形的抓图该如何实现呢

其实楼主主要是把椭圆的算法给写出来..在把屏幕的X和Y坐标给做变量控制椭圆的大小就行了..我这有个C++写的算法做参考..只要把相应的关键字改成DELPHI的就行了.
下面的代码没有优化,供参考
double A=...;//长半轴,用X坐标付值
double B=...;//短半轴,用Y坐标付值
double F=...;//角度 ,这个建议还是别动了.付个常量为妙

x,y是中点;用的是MM_LOMETRIC
CPoint p[13],p1[13];
const double EToBConst = 0.2761423749154;
double c=sin(F);double d=cos(F);
CSize offset((int)(2*A*EToBConst),(int)(2*B *EToBConst));
p[0].x=p[1].x=p[11].x=p[12].x = int (-A);
p[5].x =p[6].x = p[7].x =int(A);
p[2].x = p[10].x = - offset.cx;
p[4].x = p[8].x = offset.cx;
p[3].x = p[9].x = 0;
p[2].y = p[3].y = p[4].y =int( B);
p[8].y = p[9].y = p[10].y = int(-B);
p[7].y = p[11].y = -offset.cy;
p[1].y = p[5].y = offset.cy;
p[0].y = p[12].y = p[6].y = 0;
for(int i=0;i<=12;i++)//坐标旋转公式
{
p1[