三点如何动态的画圆弧 其实主要是能知道绘制圆弧的方向就行

        由于需求,我需要动态的在界面上随意的点下三个点绘制一段圆弧,可是绘制圆弧的方向可不太好控制,我尝试着自己写条件去控制绘图方向,可是没有一个是成功的,于是我网上找了一天,但是都没有找到解决方案。

        回到宿舍不甘心的我又开始折腾了,不过我最终在百度上看到了一条公式,利用向量叉乘法判断绘图方向,我想需要这东西的朋友肯定不少,但是网上介绍的资料并不多,所以这里分享出来让大家少走弯路... ...

//CPoint a, b, c; 分别为按顺序点下的 三个点
double cross(CPoint a, CPoint b, CPoint c)
{
    return (b.x - a.x) * (c.y - b.y) - (b.y - a.y) * (c.x - b.x);
}

//如果返回值大于0为顺时针,小于0为逆时针。
int iDirection = cross(a, b, c) > 0 ? AD_CLOCKWISE : AD_COUNTERCLOCKWISE;
dc.SetArcDirection(bDirection);
dc.Arc(rect, a, c); //a为起始点 c为结束点

 

三点如何动态的画圆弧 其实主要是能知道绘制圆弧的方向就行_第1张图片三点如何动态的画圆弧 其实主要是能知道绘制圆弧的方向就行_第2张图片三点如何动态的画圆弧 其实主要是能知道绘制圆弧的方向就行_第3张图片三点如何动态的画圆弧 其实主要是能知道绘制圆弧的方向就行_第4张图片

        资源我已上传,想要的朋友可以到这里下载: https://download.csdn.net/download/ilson_/9928611

你可能感兴趣的:(MFC)