Differenze tra le versioni di "Disegnare in una DrawingArea un poligono"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 27: Riga 27:
 
     .Brush = .Color(Color.Red)
 
     .Brush = .Color(Color.Red)
 
     .LineWidth = 2.0
 
     .LineWidth = 2.0
  <FONT Color=gray>' ''Disegna il poligono impostando i suoi parametri:''</font>
+
  <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>([80.0, 50.0, 200.0, 50.0, 250.0, 100.0, 50.0, 100.0])
+
     <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
Riga 42: Riga 42:
 
<BR>I vertici dei lati saranno impostati con il puntatore del mouse cliccando sulla superficie della "DrawingArea".
 
<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=red><B>5</b></font>  <FONT Color=gray>' '''''In questo caso si disegnerà un poligono con 5 lati'''''</font>
+
  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[]
 
   
 
   

Versione attuale delle 06:03, 15 nov 2024

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
   .W = Screen.AvailableWidth
   .H = 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
 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
   .W = Screen.AvailableWidth
   .H = 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
 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()".