The lack of XOR Drawing feature in GDI+ was not certainly welcome in the programmer's community. I guess it will be hard to survive with this handicap. In spite of this, I would like to show how we can draw rubber-band lines and shapes in GDI+ with just a few lines of code. 

 
     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)  
    Dim size As Size = SystemInformation.PrimaryMonitorMaximizedWindowSize  
    bitmap = New Bitmap(size.Width, size.Height)  
    gB = Graphics.FromImage(bitmap)  
    Dim bckColor As Color = Me.BackColor  
    gB.Clear(bckColor)  
    End Sub  
    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs)  
    Dim p As Point = New Point(e.X, e.Y)  
    x0 = p.X  
    y0 = p.Y  
    drag = True  
    End Sub  
    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs)  
    Dim p As Point = New Point(e.X, e.Y)  
    x= p.X  
    y = p.Y  
    Dim cx As Integer = x - x0  
    Dim cy As Integer = y - y0  
    If drag Then  
    Dim gx As Graphics = CreateGraphics()  
    gx.DrawImage(bitmap, 0, 0)  
    gx.Dispose()  
    Dim g As Graphics = CreateGraphics()  
    Dim pen As Pen = New Pen(Color.Blue)  
    Select Case DrawMode  
    Case 1  
    g.DrawLine(pen, x0, y0, x, y)  
    Exit Select  
    Case 2  
    g.DrawEllipse(pen, x0, y0, cx, cy)  
    Exit Select  
    Case 3  
    g.DrawRectangle(pen, x0, y0, cx, cy)  
    Exit Select  
    End Select  
    g.Dispose()  
    pen.Dispose()  
    End If  
    End Sub  
    Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs)  
    Dim cx As Integer = x - x0  
    Dim cy As Integer = y - y0  
    Dim pen As Pen = New Pen(Color.Blue)  
    Select Case DrawMode  
    Case 1  
    gB.DrawLine(pen, x0, y0, x, y)  
    Exit Select  
    Case 2  
    gB.DrawEllipse(pen, x0, y0, cx, cy)  
    Exit Select  
    Case 3  
    gB.DrawRectangle(pen, x0, y0, cx, cy)  
    Exit Select  
    End Select  
    drag = False  
    pen.Dispose()  
    End Sub  
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.PaintEventArgs)  
    Dim gx As Graphics = CreateGraphics()  
    gx.DrawImage(bitmap, 0, 0)  
    gx.Dispose()  
    End Sub  
    Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)button1.ForeColor = Color.Red  
    button2.ForeColor = Color.Black  
    button3.ForeColor = Color.Black  
    DrawMode = 1  
    End Sub  
    Private Sub button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)  
    button2.ForeColor = Color.Red  
    button1.ForeColor = Color.Black  
    button3.ForeColor = Color.Black  
    DrawMode = 2  
    End Sub  
    Private Sub button3_Click(ByVal sender As Object, ByVal e As System.EventArgs)  
    button3.ForeColor = Color.Red  
    button1.ForeColor = Color.Black  
    button2.ForeColor = Color.Black  
    DrawMode = 3  
    End Sub  
    Private Sub panel1_Paint(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.PaintEventArgs)  
    button1.ForeColor = Color.Red  
    button1.Focus()  
    End Sub