Disegnare in una DrawingArea un poligono: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| (10 versioni intermedie di uno stesso utente non sono mostrate) | |||
| Riga 7: | Riga 7: | ||
Public Sub Form_Open() | |||
With Me | With Me | ||
. | .Move(0, 0, Screen.AvailableWidth, Screen.AvailableHeight) | ||
.Arrangement = Arrange.Fill | .Arrangement = Arrange.Fill | ||
End With | End With | ||
| Riga 19: | Riga 18: | ||
End With | End With | ||
End | |||
Public Sub DrawingArea1_Draw() | |||
With Paint | With Paint | ||
.Brush = .Color(Color.Red) | .Brush = .Color(Color.Red) | ||
.LineWidth = 2.0 | .LineWidth = 2.0 | ||
<FONT Color=gray>' ''Disegna il poligono impostando i suoi | <FONT Color=gray>' ''Disegna il poligono (in questo caso un Trapezio scaleno) impostando i suoi vertici nell'unico argomento di tipo array del Metodo "Paint.Polygon()":''</font> | ||
<FONT Color=#B22222>.Polygon</font>([ | <FONT Color=#B22222>.Polygon</font>([280.0, 250.0, 400.0, 250.0, 450.0, 300.0, 250.0, 300.0]) | ||
<FONT Color=gray>' ''Se si vuole soltanto visualizzare la traccia del perimetro del poligono:''</font> | <FONT Color=gray>' ''Se si vuole soltanto visualizzare la traccia del perimetro del poligono:''</font> | ||
.Stroke | .Stroke | ||
<FONT Color=gray>' ''Se, invece, si intende ottenere un poligono internamente colorato:'' | <FONT Color=gray>' ''Se, invece, si intende ottenere un poligono internamente colorato:'' | ||
' '''.Fill'''</font> | ' '''.Fill'''</font> | ||
End With | End With | ||
End | |||
===Disegnare un qualunque poligono con il mouse=== | ===Disegnare un qualunque poligono con il mouse=== | ||
In quest'altro caso si costruirà un qualunque poligono, impostando innanzitutto nella Costante "LATI" il numero di lati che lo costituiscono. | In quest'altro caso si costruirà un qualunque poligono, impostando innanzitutto nella Costante "LATI" il numero di lati che lo costituiscono. | ||
<BR>I vertici dei lati saranno impostati | <BR>I vertici dei lati saranno impostati con il puntatore del mouse cliccando sulla superficie della "DrawingArea". | ||
Private DrawingArea1 As DrawingArea | Private DrawingArea1 As DrawingArea | ||
Private LATI As Byte = <FONT Color= | Private LATI As Byte = <FONT Color=red><B>5</b></font> <FONT Color=gray>' '''''In questo caso si potrà disegnare un poligono avente 5 lati'''''</font> | ||
Private vertici As New Short[] | Private vertici As New Short[] | ||
Public Sub Form_Open() | |||
With Me | With Me | ||
. | .Move(0, 0, Screen.AvailableWidth, Screen.AvailableHeight) | ||
.Arrangement = Arrange.Fill | .Arrangement = Arrange.Fill | ||
End With | End With | ||
| Riga 57: | Riga 55: | ||
End With | End With | ||
End | |||
Public Sub DrawingArea1_MouseUp() | |||
<FONT Color=gray>' ''Consente di disegnare un nuovo poligono:''</font> | <FONT Color=gray>' ''Consente di disegnare un nuovo poligono:''</font> | ||
| Riga 69: | Riga 68: | ||
DrawingArea1.Refresh | DrawingArea1.Refresh | ||
End | |||
Public Sub DrawingArea1_Draw() | |||
If vertici.Count == 0 Then Return | If vertici.Count == 0 Then Return | ||
| Riga 87: | Riga 87: | ||
.Stroke <FONT Color=gray>' ''Se si preferisce un poligono "pieno", usare il Metodo ".Fill"''</font> | .Stroke <FONT Color=gray>' ''Se si preferisce un poligono "pieno", usare il Metodo ".Fill"''</font> | ||
Endif | Endif | ||
End With | End With | ||
End | |||
Versione attuale delle 12:54, 10 ago 2025
Per disegnare in una DrawingArea un qualunque poligono [nota 1], è necessario utilizzare il Metodo ".Polygon()" della Classe "Paint".
Questo Metodo richiede che siano individuati nel suo unico parametro di tipo vettoriale tutti i punti (x,y rispetto all'angolo in alto a sinistra del Contenitore Drawingrea) relativi ai vertici del poligono da disegnare.
Mostriamo un esempio, nel quale sarà disegnato un "Trapezio scaleno".
Private DrawingArea1 As DrawingArea Public Sub Form_Open() With Me .Move(0, 0, Screen.AvailableWidth, Screen.AvailableHeight) .Arrangement = Arrange.Fill End With With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" .Background = Color.Lighter(Color.Yellow) End With End Public Sub DrawingArea1_Draw() With Paint .Brush = .Color(Color.Red) .LineWidth = 2.0 ' Disegna il poligono (in questo caso un Trapezio scaleno) impostando i suoi vertici nell'unico argomento di tipo array del Metodo "Paint.Polygon()": .Polygon([280.0, 250.0, 400.0, 250.0, 450.0, 300.0, 250.0, 300.0]) ' Se si vuole soltanto visualizzare la traccia del perimetro del poligono: .Stroke ' Se, invece, si intende ottenere un poligono internamente colorato: ' .Fill End With End
Disegnare un qualunque poligono con il mouse
In quest'altro caso si costruirà un qualunque poligono, impostando innanzitutto nella Costante "LATI" il numero di lati che lo costituiscono.
I vertici dei lati saranno impostati con il puntatore del mouse cliccando sulla superficie della "DrawingArea".
Private DrawingArea1 As DrawingArea
Private LATI As Byte = 5 ' In questo caso si potrà disegnare un poligono avente 5 lati
Private vertici As New Short[]
Public Sub Form_Open()
With Me
.Move(0, 0, Screen.AvailableWidth, Screen.AvailableHeight)
.Arrangement = Arrange.Fill
End With
With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
.Background = Color.Lighter(Color.Yellow)
End With
End
Public Sub DrawingArea1_MouseUp()
' Consente di disegnare un nuovo poligono:
If vertici.Count == LATI * 2 Then vertici = New Short[]
vertici.Push(Mouse.X)
vertici.Push(Mouse.Y)
DrawingArea1.Refresh
End
Public Sub DrawingArea1_Draw()
If vertici.Count == 0 Then Return
Dim b As Byte
With Paint
' Disegna un punto per ciascun clic con il puntatore del mouse:
For b = 0 To vertici.Max Step 2
.Arc(vertici[b], vertici[b + 1], 1, Rad(0), Rad(360))
.Fill
Next
If vertici.Count == LATI * 2 Then
.Polygon(vertici)
.Stroke ' Se si preferisce un poligono "pieno", usare il Metodo ".Fill"
Endif
End With
End
Note
[1] Ovviamente, per ottenere il disegno di un Quadrato o di un Rettangolo, si potrà usare il Metodo "Paint.DrawRect()" oppure "Paint.Rectangle()".