Disegnare in una DrawingArea un cerchio: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 107: Riga 107:
       .Fill
       .Fill
     Next
     Next
    .End
  End With
End
oppure con i Metodi "Paint.MoveTo() e "Paint.LineTo()":
Public Sub Form_Open()
  With Me
    .Center
    .Resizable = False
    .Width = 500
    .Height = 500
  End With
End
Public Sub DrawingArea1_Draw()
  Dim r As Float = 100            <FONT Color=gray>' ''Raggio del cerchio''</font>
  Dim cx As Float = 250            <FONT Color=gray>' ''Centro X''</font>
  Dim cy As Float = 250            <FONT Color=gray>' ''Centro Y''</font>
  Dim angle As Float
  Dim stepAngle As Float = 0.05    <FONT Color=gray>' ''Angolo in radianti''</font>
  Dim x1, y1, x2, y2 As Float
  With Paint
<FONT Color=gray>' ''Imposta lo spessore della linea:''</font>
    .LineWidth = 2
<FONT Color=gray>' ''Primo punto:''</font>
    x1 = cx + r * Cos(0)
    y1 = cy + r * Sin(0)
    .MoveTo(x1, y1)
<FONT Color=gray>' ''Crea un percorso circolare usando i Metodi ".MoveTo()" e ".LineTo()":''</font>
    For angle = stepAngle To 2 * Pi Step stepAngle
      x2 = cx + r * Cos(angle)
      y2 = cy + r * Sin(angle)
      Paint.LineTo(x2, y2)
    Next
<FONT Color=gray>' ''Chiude il cerchio:''</font>
    .ClosePath
    .Stroke
     .End
     .End
   End With
   End With

Versione delle 15:12, 14 lug 2025

Per disegnare un cerchio all'interno di una DrawingArea, è possibile utilizzare la Classe Paint.

Uso del Metodo ".Arc()"

La Classe Paint ci consente di disegnare un cerchio mediante il Metodo ".Arc()": [nota 1]

Private DrawingArea1 As DrawingArea


Public Sub Form_Open()

 With Me
   .Center
   .W = 600
   .H = 500
   .Arrangement = Arrange.Fill
 End With

 With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   .Background = Color.White
 End With
 
End


Public Sub DrawingArea1_Draw()
 
 With Paint
   .Brush = Paint.Color(Color.Red)
   .Arc(DrawingArea1.W / 2, DrawingArea1.H / 2, 100, Rad(0), Rad(360), False)
' Se si desidera disegnare un cerchio vuoto, si userà il Metodo ".Stroke":
   .Stroke
' Se si desidera disegnare un cerchio ripieno di colore, si userà il Metodo ".Fill":
   .Fill
   .End
 End With
 
End

Uso del Metodo ".Ellipse()"

La Classe Paint ci consente di disegnare un cerchio anche mediante il Metodo ".Ellipse()":

Private DrawingArea1 As DrawingArea


Public Sub Form_Open()

 With Me
   .Center
   .W = 600
   .H = 500
   .Arrangement = Arrange.Fill
 End With

 With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   .Background = Color.White
 End With
 
End


Public Sub DrawingArea1_Draw()
 
 With Paint
   .Brush = Paint.Color(Color.Red)
   .Ellipse(DrawingArea1.W / 2, DrawingArea1.H / 2,  100, 100, Rad(0), Rad(360), False)
' Se si desidera disegnare un cerchio vuoto, si userà il Metodo ".Stroke":
   .Stroke
' Se si desidera disegnare un cerchio ripieno di colore, si userà il Metodo ".Fill":
   .Fill
   .End
 End With
 
End

Usare una formula trigonometrica

E' possibile anche disegnare un cerchio punto per punto mediante una formula trigonometrica ed usando il Metodo ".FillRect()" della Classe "Paint" per ottenere un punto: [nota 2]

Private DrawingArea1 As DrawingArea


Public Sub Form_Open()

 With Me
   .Center
   .W = 600
   .H = 500
   .Arrangement = Arrange.Fill
 End With

 With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   .Background = Color.White
 End With

End


Public Sub DrawingArea1_Draw()
 
 Dim x, y, r, t As Single     
 x = DrawingArea1.W / 2
 y = DrawingArea1.H / 2
' Lunghezza del raggio della circonferenza:
 r = 100

 With Paint
   .Brush = .Color(Color.Red)
' Il ciclo disegna l'arco della circonferenza:
   For t = 0 To 360  ' Per maggiore dettaglio si potrà aggiungere: Step 0.25
     .Arc(x + (r * Cos(Rad(t))), y + (r * Sin(Rad(t))), 0.8, Rad(0), Rad(360), False)
     .Fill
   Next
   .End
 End With

End

oppure con i Metodi "Paint.MoveTo() e "Paint.LineTo()":

Public Sub Form_Open()

 With Me
   .Center
   .Resizable = False
   .Width = 500
   .Height = 500
 End With

End


Public Sub DrawingArea1_Draw()

 Dim r As Float = 100             ' Raggio del cerchio
 Dim cx As Float = 250            ' Centro X
 Dim cy As Float = 250            ' Centro Y
 Dim angle As Float
 Dim stepAngle As Float = 0.05    ' Angolo in radianti
 Dim x1, y1, x2, y2 As Float

 With Paint
' Imposta lo spessore della linea:
   .LineWidth = 2
' Primo punto:
   x1 = cx + r * Cos(0)
   y1 = cy + r * Sin(0)
   .MoveTo(x1, y1)
' Crea un percorso circolare usando i Metodi ".MoveTo()" e ".LineTo()":
   For angle = stepAngle To 2 * Pi Step stepAngle
     x2 = cx + r * Cos(angle)
     y2 = cy + r * Sin(angle)
     Paint.LineTo(x2, y2)
   Next
' Chiude il cerchio:
   .ClosePath
   .Stroke
   .End
 End With

End


Note

[1] Il disegno dell'arco segue lo standard matematico, ovvero gli angoli positivi vengono elaborati in senso antiorario con l'asse X che va da sinistra a destra e l'asse Y che va dal basso verso l'alto.
Poiché l'asse Y va dall'alto verso il basso per impostazione predefinita nel computer, gli angoli positivi procedono in senso orario.

[2] Vedere anche questa pagina: Disegnare punto per punto un cerchio