Disegnare in una DrawingArea linee rette con il mouse
Vai alla navigazione
Vai alla ricerca
Disegnare linee rette
Con il seguente codice si disegnerà una linea retta, cliccando con il tasto sinistro del mouse sulla DrawingArea e - mantenendo cliccato il tasto - spostando il puntatore del mouse lungo la superficie grafica:
Private OldX As Single
Private OldY As Single
Private StartX As Single
Private StartY As Single
Private punti As New Integer[]
Public Sub Form_Open()
DrawingArea1.Cursor = New Cursor(Picture["icon:/16/pen"], 2, 13)
End
Public Sub DrawingArea1_Draw()
Dim i As Integer
With Paint
.Brush = .Color(Color.Red)
.MoveTo(StartX, StartY)
.LineTo(OldX, OldY)
For i = 0 To punti.Max Step 4
.MoveTo(punti[i], punti[i + 1])
.LineTo(punti[i + 2], punti[i + 3])
Next
.Stroke
.End
End With
End
Public Sub DrawingArea1_MouseDown()
StartX = Mouse.X
StartY = Mouse.Y
OldX = StartX
OldY = StartY
End
Public Sub DrawingArea1_MouseMove()
OldX = Mouse.X
OldY = Mouse.Y
DrawingArea1.Refresh()
End
Public Sub DrawingArea1_MouseUp()
punti.Push(StartX)
punti.Push(StartY)
punti.Push(Mouse.StartX)
punti.Push(Mouse.StartY)
End
Far restare visibili le linee precedentemente disegnate
Per disegnare su una DrawingArea con il mouse due o più linee rette in modo tale che, le linee precedentemente disegnate, restino visibili sulla DrawingArea ad ogni disegno di una nuova linea, potremo adottare un codice come il seguente: [Nota 1]
Private OldX As Single
Private OldY As Single
Private StartX As Single
Private StartY As Single
Private punti As New Integer[]
Public Sub Form_Open()
DrawingArea1.Cursor = New Cursor(Picture["icon:/16/pen"], 2, 13)
End
Public Sub DrawingArea1_Draw()
Dim i As Integer
With Paint
.Brush = .Color(Color.Red)
.MoveTo(StartX, StartY)
.LineTo(OldX, OldY)
For i = 0 To punti.Max Step 4
.MoveTo(punti[i], punti[i + 1])
.LineTo(punti[i + 2], punti[i + 3])
Next
.Stroke
.End
End With
End
Public Sub DrawingArea1_MouseDown()
StartX = Mouse.X
StartY = Mouse.Y
OldX = StartX
OldY = StartY
End
Public Sub DrawingArea1_MouseMove()
OldX = Mouse.X
OldY = Mouse.Y
DrawingArea1.Refresh()
End
Public Sub DrawingArea1_MouseUp()
punti.Push(StartX)
punti.Push(StartY)
punti.Push(OldX)
punti.Push(OldY)
End
Note
[1] Il codice è stato realizzato dall'utente Gianluigi del forum gambas-it.org .