我用MFC做了一个简单的CAD,可以画图,但是如何可以拖动画好的图形,那位大大何以给出相关的例子或代码,十万火急,十分感谢

解决方案 »

  1.   

    ScrollDC(),ScrollWindow(),ScrollWindowEx()
      

  2.   

    这要看你这么组织图象元素的了,你要移动图象的某部分,必须让各个元素都是独立的可以移动的。我看到最简单的方法就是所有的元素以链表的形式存储在内存中。然后在OnDraw中调用相应的绘图函数进行显示,这样如果想移动图象(可以是一个元素,也可以是多个元素的组合体)只需简单的修改坐标,重新刷新后,图象就到了新的位置了。
      

  3.   

    想使用CSrollView(而想所有工作都由自己完成!):
    1.在OnVScroll中用信息管理函数(UNIT,UINT,CScrollBar*)充当例如失效等等.(用开关语句处理7条信息)也可以用SetScrollPos()、ScrollWindow()(见在线帮助)
    2.在OnSize中,按上SCROLLINFO结构(见Winuser.h)并且使用SetScrollInfo()
    3.在OnPaint中设置窗口起始位置以便在出现任何图画前显示滚动条. 或者你可以根据需要定义一个CSrollView类: 
    (1).定义一个CScrollView类,在OnCreate对话框中显示它(调用create函数)
    (2).在OnSize中定义一个CScrollView类,可调用SetScrollSizes() 
    (3).在CSrollView数据的初始化中,可用SetScrollSizes()函数来设置逻辑值如果需要,你可用开关语句来编程去调用OnVScroll等(如果在这里需要使用键盘!) 
      

  4.   

    拖动图形需要知道:microsoft 的Tracker,由于你的问题不是特别清楚,同时也因为涉及面大,不好回答。建议看写书或别人的软件。
      

  5.   

    这个蛮简单,我就讲讲怎样拖动一个矩形;
    (1)在OnLButtonDown()中画一个矩形,并记录这个矩形的左上顶点,和右下顶点。
    (2)在OnMouseMove()中,根据鼠标所指的点(即point)画矩形,每一次在同一个地方画两次矩形(即连续两次调用画矩形函数),这样就可插除这个矩形。
    (3)在OnLButtonDown(),先保存鼠标左健放开时的这个点,再按照(1)中所保存的点,画一次矩形,就可把刚开始画的矩形擦除。再用最後保存的点画一次矩形,OK,成功了。
    记住,再一个地方,用同一种颜色连续画两次,即可擦除第一次所画的图形。