我在VC++中使用样条曲线画了一个闭合图形,现在想当鼠标点在这个闭合区域时可以移动这个区域,我知道可以使用CRgn里的函数,但是那是将多边形变成区域,也就是说我要先将这个用曲线围成的区域使用直线插补算法将它变成多边形才能算,要将点用数据串起来,还要算他的点的个数,我觉得这种算法太浪费内存了。
我想问一下还有没有其他的办法,
我是菜鸟,希望高手指点,谢谢啦

解决方案 »

  1.   

    把这个闭合区域做成一个CRgn就可以通过CRgn的PtIn判断了
      

  2.   

    除了rgn方法,就只剩下数学了,如果是一个简单的形状比如三角形,可以按初高中的方法来由几个顶点来解方程,此方法倒是适用所有情况,可惜不会解此种情况。
      

  3.   


    谢谢啊,我会考虑的,但是我的图形没有方程的啊,我是用CAD画的图形,然后使用VC读取CAD生成DXF文件,所以我只有几个样条曲线的控制点,然后使用插值算法画出图形,所以我觉得应该算不出交点来的
      

  4.   

    如果你的数据允许执行floodfill,可以用内存dc画封闭的边界,然后填充,在鼠标点击的位置对应的内存dc去pixel颜色,如果是底色就在外,如果是填充颜色就在内
    如果由很多这种区域,能先用包围盒的方法过滤掉一些应该能快点