1个回答
展开全部
我以前做过这种绘图小程序,说说我的算法吧:
你可以使用动态数组CArray,把绘制曲线是生成的坐标点存入CArray中。
选中算法: 点击时会生成一个点point,求曲线上点到此点point的距离d(线性数学,自己解决),如果d<=0.01(这个值可以自己看情况设定,建议大一点,以为太小的话,曲线有锯齿,选不中),就判定选中了,如果想设置选中效果的话,你可以把CArray中的点列给重新绘制一下,如画笔设成red
移动算法:平移就是 按下左键(point1)----拖动----松开左键(point2) 的过程,你轻易可以求出point2到point1的位移(point2.x-point1.x,point2.y-point1.y),然后用循环对CArray中每个点都做平移处理。最后重新绘制新曲线。
此外曲线的放大,缩小,撤销操作等,基本都已一个原理,最主要的是用好CArray
你可以使用动态数组CArray,把绘制曲线是生成的坐标点存入CArray中。
选中算法: 点击时会生成一个点point,求曲线上点到此点point的距离d(线性数学,自己解决),如果d<=0.01(这个值可以自己看情况设定,建议大一点,以为太小的话,曲线有锯齿,选不中),就判定选中了,如果想设置选中效果的话,你可以把CArray中的点列给重新绘制一下,如画笔设成red
移动算法:平移就是 按下左键(point1)----拖动----松开左键(point2) 的过程,你轻易可以求出point2到point1的位移(point2.x-point1.x,point2.y-point1.y),然后用循环对CArray中每个点都做平移处理。最后重新绘制新曲线。
此外曲线的放大,缩小,撤销操作等,基本都已一个原理,最主要的是用好CArray
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询