form上画MSFLEXGRID的曲线,要求一条一条的画,要画下一条后如何清除上一条曲线??
请高手指导后辈!!听有人说用异或笔。不知道行不行

解决方案 »

  1.   

    采用异或笔是利用:某一个值与另一个值相异或两次后,其值不变的原理。也就是说当把曲线第一次画上去时,用指定的颜色A与该点的颜色值B相异或得到的值C作为当前颜色进行画线;当抹掉时,用A色再与改点当前的颜色值C相异或,就得到原来的值B进行画线,效果就是把原来的线抹掉了。这是一种抹线的方法,但也有它的缺点:因为是异或后的结果作为画线的颜色,所以得到的线条的颜色并不是我们指定的那种颜色,而是异或后的结果(变色了),另外,在多条线条重合的地方,是多条线的颜色共同异或后的结果,一般与每一条线的颜色都不相同,有点别扭。不过这种方法是比较简单地实现“抹掉”的效果。
    如果要求比较高,就需要把每条线(包括每个图形)的画线情况、次序情况都记录下来,需要抹线时,就需要把该图形重画,这方法在图形比较复杂时也很难实现的。
    各位大侠可有更好的方法?
      

  2.   


    请问异或笔一定要在picture属性里面用吗?我在form上面画曲线,可以用在form上吗?
      

  3.   

    试了一下Option ExplicitPrivate Sub Command1_Click()
    DrawMode = vbXorPen
    Line (100, 100)-(1000, 1000)
    End SubPrivate Sub Form_Click()
    DrawMode = vbXorPen
    Line (100, 100)-(1000, 1000)
    End Sub
    点form和点command1都没有反应。但是我看form的属性中也有drawmode啊??????????哪里的问题
      

  4.   

    可以的,请参考:
    Private Sub Form_Load()
      AutoRedraw = True
      DrawMode = vbXorPen
      Line (300, 300)-(2000, 1600), RGB(0, 0, 255)
    End Sub
    通过采用或不睬用 DrawMode = vbXorPen,你可以看出异或笔的作用。