我要做的是一个类似于画图板的程序
一个画板(Panel)
我用GDI+在上面画画,
发现如果一个窗口覆盖在画板上,
当该窗体消失后,会在画板上留下一个和窗体形状一样的块.
就像是那区域的东西被擦掉了
……这是个C#程序, 我想尽量不要调用WINDOWS API为妙.
有什么好的解决方案么?
或者说有没有什么方法可以在画板上方出现东西之前保存在那块区域所画的东西?

解决方案 »

  1.   

    你需要定义数据层来保存你画的东西,比如画的线段,曲线,图片,都要用不同的对象保存在内存中paint方法只管执行。
      

  2.   

    把你要绘制的图片绘制为一个bitmap 然后把 panel的背景设置为你的bitmap 试试
      

  3.   

    2楼说的我明白了.....原来是这样
    3楼的方法很好. 所有的操作转到Image上
    然后把Image画到Panel上就完事了!!好主意!!
      

  4.   

    我做过类似的程序,大致思想如下对于每个要画的图形,都封装为相应的对象,并在这个对象里自己实现Draw方法,比如,选择画直线工具,就生成一个Line对象,再把鼠标的位置(起点,终点)赋值给这个对象,Draw方法就能调用GDI+的DrawLine方法来画自己了每次画一个对象,都将其放入一个List中保存起来当重绘Panel时,遍历List中的所有对象,然后调用其Draw方法,就能做到每次画出的东西都不丢失了。这样的一个好处是还能实现undo/redo功能