我用GDI+绘图在非纯色有背景图的窗体上画了线
之后又画了许多图形,现在想让之前画的线消失去掉,如何实现?用me.cls会导致所有图形都被清除了
而如果用覆盖的方式则会留下痕迹,因为背景不是纯色的。还有一个问题就是,我直接在桌面句柄上绘图,画是画出来了,结果桌面刷新或者被窗体覆盖后再移开,画过的图形就会消失,有没有啥办法一直保持直到取消?

解决方案 »

  1.   


    消除画线: 画的时候用Xor画笔,然后只要用相同的颜色和画笔按照该条线的坐标重新画一次就没有了桌面刷新: 画的时候先把桌面截图下来,然后在截图上画,画好之后把新的图片设为桌面
      

  2.   

    你的思路有一个误区,对于点阵图形,你把那条线看作是一个对象了,而对于点阵图形来说,是没有这种对象的概念的,这种概念完全是软件开发者加入的操作理念。而这种理念的实现基础,就是“重绘”图形,所谓的重绘,通常是由设计者定制的一个的元素数组按照顺序在内存设备重绘一遍,然后再输出到屏幕的过程。比如你的那条线,在元素数组中可能属于一个元素,存储了X1,Y1,X2,Y2,Color,Line Size等信息,当决定不要这个元素,只需要删除这个元素,然后重新按元素数组的内容在GDI内存设备里重绘一遍,然后输出到屏幕就可以了。
    这种做法也就是游戏的惯用手段,别说一条线,更为复杂的元素阵列都可以搞定。