Usando los Metodos .Line y .Circle ...
Debes usar el metodo .Line para trazar lineas, ya sea en el PictureBox, en el objeto Printer, en una Form, etc ...
Aqui te pongo codigo de ejemplo para trazar lineas, circulos, cuadros y elipses en un picturebox, usando el .MouseDown, .MouseMove y .MouseUp del PictureBox ...
En una Forma, pon un PictureBox (Picture1), 6 CommandButtons (command1 al command6) y pega el codigo que te pongo ...
''''''''''''''''''''''''''''''''
Dim nX_Ini As Single, nY_Ini As Single
Dim nX_Fin As Single, nY_Fin As Single
Dim nRadio As Single
Dim nDrawMode As Integer
Dim nDrawWidth As Integer
Dim bTrazarLinea As Boolean
Dim bTrazarCuadro As Boolean
Dim bTrazarCirculo As Boolean
Dim bTrazarElipseH As Boolean
Dim bTrazarElipseV As Boolean
Dim bDibujando As Boolean
Private Sub Command1_Click()
Call Trazar_Nada
bTrazarLinea = True
End Sub
Private Sub Command2_Click()
Call Trazar_Nada
bTrazarCuadro = True
End Sub
Private Sub Command3_Click()
Call Trazar_Nada
bTrazarCirculo = True
End Sub
Private Sub Command4_Click()
Call Trazar_Nada
bTrazarElipseH = True
End Sub
Private Sub Command5_Click()
Call Trazar_Nada
bTrazarElipseV = True
End Sub
Private Sub Trazar_Nada()
bTrazarLinea = False
bTrazarCuadro = False
bTrazarCirculo = False
bTrazarElipseH = False
bTrazarElipseV = False
End Sub
Private Sub Command6_Click()
Me.Picture1 = LoadPicture()
End Sub
Private Sub Form_Load()
Me.Command1.Caption = "Trazar Lineas"
Me.Command2.Caption = "Trazar Cuadros"
Me.Command3.Caption = "Trazar Circulos"
Me.Command4.Caption = "Elipse Horizont"
Me.Command5.Caption = "Elipse Vertical"
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
nX_Ini = X
nY_Ini = Y
nX_Fin = X
nY_Fin = Y
nRadio = nX_Fin - nX_Ini
nDrawMode = Me.Picture1.DrawMode
nDrawWidth = Me.Picture1.DrawWidth
Me.Picture1.DrawMode = vbInvert
Me.Picture1.DrawWidth = 2 ' <- opcional !!!
bDibujando = True
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If bDibujando Then
If bTrazarLinea Then
Me.Picture1.Line (nX_Ini, nY_Ini)-(nX_Fin, nY_Fin)
ElseIf bTrazarCuadro Then
Me.Picture1.Line (nX_Ini, nY_Ini)-(nX_Fin, nY_Fin), , B
ElseIf bTrazarCirculo Then
Me.Picture1.Circle (nX_Ini, nY_Ini), nRadio
ElseIf bTrazarElipseH Then
Me.Picture1.Circle (nX_Ini, nY_Ini), nRadio, , , , 0.5
ElseIf bTrazarElipseV Then
Me.Picture1.Circle (nX_Ini, nY_Ini), nRadio, , , , 1.5
End If
nX_Fin = X
nY_Fin = Y
If bTrazarLinea Then
Me.Picture1.Line (nX_Ini, nY_Ini)-(nX_Fin, nY_Fin)
ElseIf bTrazarCuadro Then
Me.Picture1.Line (nX_Ini, nY_Ini)-(nX_Fin, nY_Fin), , B
Else
If nX_Fin >= nX_Ini Then
nRadio = nX_Fin - nX_Ini
Else
nRadio = nX_Ini - nX_Fin
End If
If bTrazarCirculo Then
Me.Picture1.Circle (nX_Ini, nY_Ini), nRadio
ElseIf bTrazarElipseH Then
Me.Picture1.Circle (nX_Ini, nY_Ini), nRadio, , , , 0.5
ElseIf bTrazarElipseV Then
Me.Picture1.Circle (nX_Ini, nY_Ini), nRadio, , , , 1.5
End If
End If
End If
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
bDibujando = False
Me.Picture1.DrawMode = nDrawMode
Me.Picture1.DrawWidth = nDrawWidth
End Sub
'''''''''''''''''''''''''''''''''