您的位置:首页 > 其它

关于圆弧、扇形对象的点选和框选

2013-12-25 21:36 288 查看
已知圆弧、扇形的中心点ptCT、起始点ptDrawStart、终点ptDrawEnd、选择框的LT/RB点、起始角度StartAngle、圆弧或扇形对应的角度SweepAngle、半径Radius等

一、点选

在while循环中,根据SweepAngle角度的自增或自减,然后来根据中心点、偏移角度、起点算得偏移后的pt点,然后拿pt点与传进来的点ptReserve(如果对线被旋转缩放过,会进代码中的反旋转缩放回来)点计算距离。如果两点距离小于等于线宽,则判定是在圆弧或扇形上的弧线点。

扇形还需通过点是否在两边直线上,可以判定点是否在两点线段上来判定是否在两边直线上。

如果扇形是填充的,点在扇形里面怎么判断呢?也可以通过上面的while(SweepAngle)循环中判断该点是否在中心点与弧线上点的两点线段直线上。

void CWBObject::ResumeXForm(int nGraphicsMode)
{
if (m_pDC == NULL)
{
return;
}

HDC hDC = m_pDC->GetSafeHdc();

// 恢复DC
XFORM xform;

xform.eM11 = (float)1.0;
xform.eM12 = (float)0;
xform.eM21 = (float)0;
xform.eM22 = (float)1.0;
xform.eDx = (float)0;
xform.eDy = (float)0;
SetWorldTransform(hDC, &xform);

SetGraphicsMode(hDC, nGraphicsMode);
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐