本帖最后由 shimachao 于 2014-04-22 17:20:55 编辑

解决方案 »

  1.   

    必须将已经绘制的数据保留下来,比如保留到一个数组中,
    重绘的时候要包含历史数据和当前正在操作的数据的重绘
    (不要使用鼠标事件进行绘图,应该使用Invalidate激发重绘)
      

  2.   

    历史数据已经保存了,在OnDraw中会绘制历史数据。但是鼠标拖动的过程中是没有激发OnDraw的。按你说的用Invalidate去激发的话。那不是很频繁,效率会不会很低呢?绘图过程中每动一个像素都要Invalidate一次。
      

  3.   

    将已有数据保存起来(可以自定义数据结构放到列表中),每次鼠标移动的时候进行局部刷新,在onDrwa中把数据列表中的数据重新绘制,这样就可以了
      

  4.   

    http://blog.csdn.net/longzhishen/article/details/24254183 内含保存图像到 BMP 文件
      

  5.   

    好吧,我就是个悲剧,连问题都描述不清楚!既然要画图,那就找个榜样吧
    AutoCAD应该都知道吧AutoCAD是用数据库保存图形的
    但他即没用SQL,也没用ACCESS,自创那么数据库到底是怎么回事情呢?
    说白了复杂的就是个广义表
    简单的就是个链表你操作画图其实计算机执行了三个任务
    1、把你鼠标键盘信息换算成图形数据
    2、把图形数据添加到链表,或者从链表删除,或者修改
    3、把链表数据画到窗口上画的动作在OnPaint里一个循环就画完了
    其他所有的动作都是操作链表,然后Invalidate效率低不低不是你凭感觉判断
    而是程序写好后的结果说了算一张图你能画10000根线我算你狠
    就算你画一万根线,同样不是你感觉能说了算的
    何况用双缓冲,COPY的内容也最多你屏幕的范围