canvas控件,用shapes类画一个矩形,然后作为children对象add到canvas里.
问题:
怎么样才能擦除矩形的某一部分呢?如果这种思路不通,应该怎么做呢?
PS:试过取背景色遮掩矩形,但如果矩形移动后就露馅了.

解决方案 »

  1.   


    矢量擦除“部分”不是想象的那么容易的,例如像Flash里,要将一根曲线中间擦除一部分,必须先将这根线“打散”(实际上是用插值方法重新计算了这根线的数据存储链表) 
      

  2.   

    如果我还想存留一份数据以表示我擦除了哪部分内容。怎么办?我是单独的一个类,并非在DOCument或View这些类内。我的思路是从ONMOVE这些里面调数据,但实现不太好。哪位大哥有更好的方法?谢谢!
      

  3.   

    if (_plotEraserFlag)
                { 
                    //将橡皮擦绘制到Image中
                    Graphics g = Graphics.FromImage(_oldImage);
                    g.DrawImageUnscaled(???);
                    g.Dispose();
                    this.pictureBox1.Invalidate(); //重绘
                    _mouseFlag = false; //标记为鼠标抬起状态
                    
                }其中???部分应该是写一个IMAGE和它的大小,但是我不知道怎么写,请求解答,我如果写出来的话应该可以达到橡皮擦的功能,就像楼上的朋友说的,画背景色就可以了.
      

  4.   

    补充一下我上面说的:_plotEraserFllag是我设置的一个橡皮擦的bool,控制是否用橡皮擦的变量._oldImage是画图区
      

  5.   

    我也想知道,楼主的意思我感同身受。
    如果是背景色擦写,那么被擦的图元在移动时会通过重绘还原回来,即所谓的“露馅儿”了。如果是线段。而且,橡皮擦在擦写的时候,一般是不分层级的(Z Index),所以被擦的图元要记住自己被擦的不分也挺困难。求解