关于圆弧、扇形对象的点选和框选
2013-12-25 21:36
288 查看
已知圆弧、扇形的中心点ptCT、起始点ptDrawStart、终点ptDrawEnd、选择框的LT/RB点、起始角度StartAngle、圆弧或扇形对应的角度SweepAngle、半径Radius等
一、点选
在while循环中,根据SweepAngle角度的自增或自减,然后来根据中心点、偏移角度、起点算得偏移后的pt点,然后拿pt点与传进来的点ptReserve(如果对线被旋转缩放过,会进代码中的反旋转缩放回来)点计算距离。如果两点距离小于等于线宽,则判定是在圆弧或扇形上的弧线点。
扇形还需通过点是否在两边直线上,可以判定点是否在两点线段上来判定是否在两边直线上。
如果扇形是填充的,点在扇形里面怎么判断呢?也可以通过上面的while(SweepAngle)循环中判断该点是否在中心点与弧线上点的两点线段直线上。
View Code
一、点选
在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
相关文章推荐
- 关于使用jquery与后台交互,传递json对象的使用方法
- C++对象模型——关于对象(第一章)
- 关于top对象和parent对象的一点小感悟
- js关于this对象
- 关于mybatis多对多关联查询 下面的例子让新手看不错。可以改进的一点是 1、不必建立 关联对象实体,可以用map传递两个id进去 2、文章的resultMa
- 关于:“无法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化
- 关于JavaScript中几种创建对象的方式
- 关于ASP.NET MVC中Controller向View传值用到的两个类对象【ViewData与ViewBag】
- 关于在Intent中传递对象的两种方法之一Parcelable
- 关于JPA中对于一对多双向关联下对象迭代产生占内存溢出问题的解决
- C++ — 关于菱形虚拟继承对象模型的探究
- 关于给javascript对象添加、删除、修改对象的属性
- 关于JavaScript的面向对象和继承有利新手学习
- 关于虚函数的继承和const对象及函数重载
- 关于String a=new String("a")创建几个对象问题的正确答案
- 25-JAVA面向对象-JAVA关于值的传递详解
- 深度探索C++对象模型(一)——关于对象
- 关于jax-ws 使用wsdl文件数组对象定义:maxOccurs=”unbounded”
- 关于Javascript中通过实例对象修改原型对象属性值的问题
- 关于select对象在FireFox中的一个兼容性问题