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

Da Gambas-it.org - Wikipedia.
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Mostriamo di seguito un possibile codice per disegnare in una DrawingArea un singolo "Triangolo" impostando i suoi vertici con il clic del mouse.
+
Per disegnare in una DrawingArea un singolo "Triangolo", impostando i suoi vertici con il clic del mouse, sono possibili almeno un paio di modalità.
 +
 
 +
===Usando i Metodi ".MoveTo()" e ".LineTo()" della Classe "Paint"===
 +
Con questa modalità i lati del triangolo saranno disegnati dalle linee create dai Metodi ".MoveTo()" e ".LineTo()" della Classe "Paint".
 +
Private DrawingArea1 As DrawingArea
 
  Private vertix As New Short[]
 
  Private vertix As New Short[]
 
   
 
   
 +
'''Public''' Sub _new()
 +
 +
  With Me
 +
    .W = Screen.AvailableWidth
 +
    .H = Screen.AvailableHeight
 +
    .Arrangement = Arrange.Fill
 +
  End With
 +
  With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
 +
    .Background = Color.White
 +
  End With
 +
 +
'''End'''
 +
 +
'''Public''' Sub DrawingArea1_MouseUp()
 +
 +
<FONT Color=gray>' ''Consente di disegnare un nuovo triangolo:''</font>
 +
  If vertix.Count == 6 Then vertix = New Short[]
 +
 +
  vertix.Push(Mouse.X)
 +
  vertix.Push(Mouse.Y)
 +
 +
  DrawingArea1.Refresh
 +
 +
'''End'''
 
   
 
   
 
  '''Public''' Sub DrawingArea1_Draw()
 
  '''Public''' Sub DrawingArea1_Draw()
 
+
  Dim b As Byte
 
 
 
 
   If vertix.Count == 0 Then Return  
 
   If vertix.Count == 0 Then Return  
 
+
 
   With Paint
 
   With Paint
 
  <FONT Color=gray>' ''Disegna un punto sul primo clic con il puntatore del mouse:''</font>
 
  <FONT Color=gray>' ''Disegna un punto sul primo clic con il puntatore del mouse:''</font>
Riga 18: Riga 44:
 
     Endif
 
     Endif
 
  <FONT Color=gray>' ''Se il vettore "vertix" ha almeno 4 elementi, è possibile disegnare il primo lato:''</font>
 
  <FONT Color=gray>' ''Se il vettore "vertix" ha almeno 4 elementi, è possibile disegnare il primo lato:''</font>
     .MoveTo(vertix[0], vertix[1])
+
     <FONT Color=#B22222>.MoveTo</font>(vertix[0], vertix[1])
     .LineTo(vertix[2], vertix[3])
+
     <FONT Color=#B22222>.LineTo</font>(vertix[2], vertix[3])
 
     If vertix.Count == 6 Then  
 
     If vertix.Count == 6 Then  
 
  <FONT Color=gray>' ''Se il vettore "vertix" ha 6 elementi, è possibile disegnare il secondo e il terzo lato:''</font>
 
  <FONT Color=gray>' ''Se il vettore "vertix" ha 6 elementi, è possibile disegnare il secondo e il terzo lato:''</font>
       .LineTo(vertix[4], vertix[5])
+
       <FONT Color=#B22222>.LineTo</font>(vertix[4], vertix[5])
       .LineTo(vertix[0], vertix[1])
+
       <FONT Color=#B22222>.LineTo</font>(vertix[0], vertix[1])
 
     Endif  
 
     Endif  
     .Stroke  <FONT Color=gray>' ''Se si preferisce un triangolo "pieno", usare il Metodo "'''.Fill'''":''</font>
+
     .Stroke  <FONT Color=gray>' ''Se si preferisce un triangolo "pieno", usare il Metodo "'''.Fill'''"''</font>
 
     .End
 
     .End
 
   End With
 
   End With
 
+
 
 +
'''End'''
 +
 
 +
===Usando il Metodo ".Polygon()" della Classe "Paint"===
 +
In quest'altra modalità - più breve della precedente - i punti impostati con il mouse saranno passati come array al Metodo ".Polygon()" della Classe "Paint" per disegnare il triangolo prescelto.
 +
Private DrawingArea1 As DrawingArea
 +
Private vertix As New Short[]
 +
 +
  '''Public''' Sub _new()
 +
 +
  With Me
 +
    .W = Screen.AvailableWidth
 +
    .H = Screen.AvailableHeight
 +
    .Arrangement = Arrange.Fill
 +
  End With
 +
  With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
 +
    .Background = Color.White
 +
  End With
 +
 
  '''End'''
 
  '''End'''
 
   
 
   
Riga 35: Riga 79:
 
  <FONT Color=gray>' ''Consente di disegnare un nuovo triangolo:''</font>
 
  <FONT Color=gray>' ''Consente di disegnare un nuovo triangolo:''</font>
 
   If vertix.Count == 6 Then vertix = New Short[]
 
   If vertix.Count == 6 Then vertix = New Short[]
 
+
 
   vertix.Push(Mouse.X)
 
   vertix.Push(Mouse.X)
 
   vertix.Push(Mouse.Y)
 
   vertix.Push(Mouse.Y)
 
+
 
   DrawingArea1.Refresh
 
   DrawingArea1.Refresh
 +
 +
'''End'''
 +
 +
'''Public''' Sub DrawingArea1_Draw()
 +
 +
  If vertix.Count == 0 Then Return
 +
 +
  Dim b As Byte
 +
 +
  With Paint
 +
<FONT Color=gray>' ''Disegna in sequenza un punto per ciascun vertice impostato del triangolo:''</font>
 +
    For b = 0 To vertix.Max Step 2
 +
    .Arc(vertix[b], vertix[b + 1], 1, Rad(0), Rad(360))
 +
    .Fill
 +
    Next
 +
    If vertix.Count == 6 Then
 +
    <FONT Color=#B22222>.Polygon</font>(vertix)
 +
    .Stroke          <FONT Color=gray>' ''Se si preferisce un triangolo "pieno", usare il Metodo ".Fill"''</font>
 +
    Endif
 +
    .End
 +
  End With
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione attuale delle 22:49, 3 gen 2022

Per disegnare in una DrawingArea un singolo "Triangolo", impostando i suoi vertici con il clic del mouse, sono possibili almeno un paio di modalità.

Usando i Metodi ".MoveTo()" e ".LineTo()" della Classe "Paint"

Con questa modalità i lati del triangolo saranno disegnati dalle linee create dai Metodi ".MoveTo()" e ".LineTo()" della Classe "Paint".

Private DrawingArea1 As DrawingArea
Private vertix As New Short[]

Public Sub _new()

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With
 With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   .Background = Color.White
 End With

End

Public Sub DrawingArea1_MouseUp()

' Consente di disegnare un nuovo triangolo:
 If vertix.Count == 6 Then vertix = New Short[]

 vertix.Push(Mouse.X)
 vertix.Push(Mouse.Y)

 DrawingArea1.Refresh

End

Public Sub DrawingArea1_Draw()

 If vertix.Count == 0 Then Return 

 With Paint
' Disegna un punto sul primo clic con il puntatore del mouse:
   .Arc(vertix[0], vertix[1], 1, Rad(0), Rad(360))
   .Fill
   If vertix.Count < 4 Then 
     .End
     Return 
   Endif
' Se il vettore "vertix" ha almeno 4 elementi, è possibile disegnare il primo lato:
   .MoveTo(vertix[0], vertix[1])
   .LineTo(vertix[2], vertix[3])
   If vertix.Count == 6 Then 
' Se il vettore "vertix" ha 6 elementi, è possibile disegnare il secondo e il terzo lato:
     .LineTo(vertix[4], vertix[5])
     .LineTo(vertix[0], vertix[1])
   Endif 
   .Stroke  ' Se si preferisce un triangolo "pieno", usare il Metodo ".Fill"
   .End
 End With
 
End

Usando il Metodo ".Polygon()" della Classe "Paint"

In quest'altra modalità - più breve della precedente - i punti impostati con il mouse saranno passati come array al Metodo ".Polygon()" della Classe "Paint" per disegnare il triangolo prescelto.

Private DrawingArea1 As DrawingArea
Private vertix As New Short[]

 Public Sub _new()

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With
 With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   .Background = Color.White
 End With

End

Public Sub DrawingArea1_MouseUp()

' Consente di disegnare un nuovo triangolo:
 If vertix.Count == 6 Then vertix = New Short[]

 vertix.Push(Mouse.X)
 vertix.Push(Mouse.Y)

 DrawingArea1.Refresh

End

Public Sub DrawingArea1_Draw()

 If vertix.Count == 0 Then Return 

 Dim b As Byte

 With Paint
' Disegna in sequenza un punto per ciascun vertice impostato del triangolo:
   For b = 0 To vertix.Max Step 2
    .Arc(vertix[b], vertix[b + 1], 1, Rad(0), Rad(360))
    .Fill
   Next 
   If vertix.Count == 6 Then 
    .Polygon(vertix)
    .Stroke          ' Se si preferisce un triangolo "pieno", usare il Metodo ".Fill"
   Endif
   .End
 End With

End