请教各位高手:我用VB6.0 做了一个form,做成了全透明模式.我在上面画了很多的线条,form的背景图是一张有各种颜色的图片.
现在我想开发橡皮擦功能,参考了网上VB做橡皮擦的解决办法,都是建议使用背景色来画线来实现擦除的目的;而我这种情况是无法使用的,因为如果用背景色,就会在背景图上画出背景色的线条.请问有什么好的解决办法吗?

解决方案 »

  1.   

    通过 DrawMode 控制绘图方式。
    Option ExplicitPrivate bOnDrag As Boolean
    Private X1 As Long
    Private Y1 As Long
    Private X2 As Long
    Private Y2 As LongPrivate Sub Form_Load()
        Me.ScaleMode = vbPixels
        Me.AutoRedraw = True
        Me.Line (50, 50)-(ScaleWidth - 50, ScaleHeight - 50), vbYellow, BF
        Me.FillStyle = vbFSSolid
        Me.FillColor = vbRed
        Me.Circle (100, 100), 80, vbRed
    End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = vbLeftButton Then
            X1 = X
            Y1 = Y
            X2 = X
            Y2 = Y
            Me.DrawMode = vbNotXorPen
            Me.Line (X1, Y1)-(X2, Y2)
            bOnDrag = True
        End If
    End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If bOnDrag Then
            Me.Line (X1, Y1)-(X2, Y2)
            X2 = X
            Y2 = Y
            Me.Line (X1, Y1)-(X2, Y2)
        End If
    End SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If (Button = vbLeftButton) And bOnDrag Then
            bOnDrag = False
            Me.Line (X1, Y1)-(X2, Y2)
            Me.DrawMode = vbCopyPen
            Me.Line (X1, Y1)-(X2, Y2)
        End If
    End Sub
      

  2.   

    复制一张背景图存到内存,擦除时
    用bitblt函数把背景图再涂上,不 就是橡皮擦了.
      

  3.   

    用背景图的一小部分 PaintPicture。