Disegnare in una DrawingArea linee rette con il mouse
Da Gambas-it.org - Wikipedia.
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 .