就是GDI中的PolyBezier( )函数源码!(最好是C语言)万分感谢!
解决方案 »
- APIhook拦截删除
- CListCtrl 删除每行数据
- 键盘钩子菜鸟问题
- 高手请进
- 如何判断USB口映射的是com3还是com4口?
- API Spy 的原理是什么?就是那个鬼佬写的监视API一举一动的那个小软件!
- 请问如何将一个ComboBoxEx控件和一个ListCtrl控件直接依附在CView上并设置控件的大小和相对位置呢?(我只会先将他们放到对话框上然后为
- 一个有关cmap,串行化,文件操作的综合问题?
- 怎么用编写一个论坛自动注册的程序?
- Visual C++有中文版吗?
- pODBCRecordSet->GetValueInColumn(8,strAuthor);8代表什么?此函数作用?
- 如何调用DLL?
HDC hdc, // handle to device context
CONST POINT* lppt, // endpoints and control points
DWORD cPoints // count of endpoints and control points
);
要算具体的曲线坐标就要牵扯数学了,我数学不好,呵呵
double x3, double y3, double x4, double y4)
{
double A = y4 - y1;
double B = x1 - x4;
double C = y1 * (x4-x1) - x1 * ( y4-y1);
// Ax + By + C = 0 is line (x1,y1) - (x4,y4) double AB = A * A + B * B; // distance from (x2,y2) to the line is less than 1
// distance from (x3,y3) to the line is less than 1
if ( ( A * x2 + B * y2 + C ) * ( A * x2 + B * y2 + C ) < AB )
if ( ( A * x3 + B * y3 + C ) * ( A * x3 + B * y3 + C ) < AB )
{
MoveToEx(hDC, (int)x1, (int)y1, NULL);
LineTo(hDC, (int)x4, (int)y4); return;
}
double x12 = x1+x2;
double y12 = y1+y2;
double x23 = x2+x3;
double y23 = y2+y3;
double x34 = x3+x4;
double y34 = y3+y4; double x1223 = x12+x23;
double y1223 = y12+y23;
double x2334 = x23+x34;
double y2334 = y23+y34; double x = x1223 + x2334;
double y = y1223 + y2334; Bezier(hDC, x1, y1, x12/2, y12/2, x1223/4, y1223/4, x/8, y/8);
Bezier(hDC, x/8, y/8, x2334/4, y2334/4, x34/2, y34/2, x4, y4);
}
这段代码就是BEZIER 的实现原理,但不是PolyBezier的原码不过两者实现都差不多
你的代码确实可以画出BEZIER曲线。但是我如何依次得到曲线上点的座标呢?
除了这种递归算法,有没有别的算法?
再次感谢zxszx(zxs),请再帮我看一下。