比如我用DrawLine()在窗口上画的线
还想对其进行选中,编辑,删除等操作
需要怎么办呢
同样,其它的点,面,多边形等也同问.PS,我做GIS方面的

解决方案 »

  1.   

    STL的list 我也是做矢量图形类似的操作的,用的就是list
      

  2.   

    最好是直接保持点的坐标,用C++按类型封装,比如CLine。
    class CLine
    {
    private:
    CPoint pt1;
    CPoint pt2;
    };class CPolygon
    {
    private:
    std::list<CPoint> m_PntList;
    };然后你就可以方便保存不同类型的每个数据
      

  3.   

    GIS方面
    存储最能描述线、点,面,多边形这些对象的参数就行了。比如点可以用其坐标、颜色来记录;圆用中心坐标、半径、边界颜色、填充颜色来记录。
      

  4.   

    选中只是给人的一种假象,当然,你也可以在你的类中设计select功能与move功能,这样选中的时候,由系统调用select功能来显示外框,表示已经被选中了,当鼠标移动到某一个位置时(即想要的位置时),你先保存目的地点,然后删除原图的点(可以用背景色重画),再画出目的点,同时也显示外框,当鼠标点击到其他地方时,选中外框消息。由于鼠标不可能那么精确点到线,因此还应该设置一个合理的像素点,在此范围内点击表示选中点
      

  5.   


    判断点击的消息,如果点击的位置在CLine或者CPolygon的直线上,就表示选中对象,用不同的状态画出来即可
      

  6.   

    文件中使用标签的存储方式。比如存储1点,用POINT标签开始,后面一个位置存储点数目,然后点的记录。
      

  7.   

    最后一个问题是所有区别的事件都要在 mouseMove,mouseDown等事件内完成岂不是要用很多switch("ActName")来区别操作?这样会不会很乱?