Disegnare in una DrawingArea un cerchio: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| (9 versioni intermedie di uno stesso utente non sono mostrate) | |||
| Riga 1: | Riga 1: | ||
Per disegnare un cerchio all'interno di una ''DrawingArea'', è possibile utilizzare la Classe | Per disegnare un cerchio all'interno di una ''DrawingArea'', è possibile utilizzare la Classe ''Paint''. | ||
===Uso del Metodo ".Arc()"=== | ===Uso del Metodo ".Arc()"=== | ||
La Classe ''Paint'' ci consente di disegnare un cerchio mediante il Metodo ".Arc()": | La Classe ''Paint'' ci consente di disegnare un cerchio mediante il Metodo ".Arc()": <SUP>[[[#Note|nota 1]]]</sup> | ||
Private DrawingArea1 As DrawingArea | Private DrawingArea1 As DrawingArea | ||
Public Sub Form_Open() | |||
With Me | With Me | ||
| Riga 16: | Riga 16: | ||
With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" | With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" | ||
. | .Background = Color.White | ||
End With | End With | ||
End | |||
Public Sub DrawingArea1_Draw() | |||
With Paint | With Paint | ||
| Riga 31: | Riga 31: | ||
<FONT Color=gray>' ''Se si desidera disegnare un cerchio ripieno di colore, si userà il Metodo ".Fill":''</font> | <FONT Color=gray>' ''Se si desidera disegnare un cerchio ripieno di colore, si userà il Metodo ".Fill":''</font> | ||
.Fill | .Fill | ||
End With | End With | ||
End | |||
===Uso del Metodo ".Ellipse()"=== | ===Uso del Metodo ".Ellipse()"=== | ||
| Riga 41: | Riga 40: | ||
Public Sub Form_Open() | |||
With Me | With Me | ||
| Riga 51: | Riga 50: | ||
With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" | With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" | ||
. | .Background = Color.White | ||
End With | End With | ||
End | |||
Public Sub DrawingArea1_Draw() | |||
With Paint | With Paint | ||
| Riga 66: | Riga 65: | ||
<FONT Color=gray>' ''Se si desidera disegnare un cerchio ripieno di colore, si userà il Metodo ".Fill":''</font> | <FONT Color=gray>' ''Se si desidera disegnare un cerchio ripieno di colore, si userà il Metodo ".Fill":''</font> | ||
.Fill | .Fill | ||
End With | End With | ||
End | |||
===Usare una formula trigonometrica=== | ===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: | 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: <SUP>[[[#Note|nota 2]]]</sup> | ||
Private DrawingArea1 As DrawingArea | Private DrawingArea1 As DrawingArea | ||
Public Sub Form_Open() | |||
With Me | With Me | ||
| Riga 86: | Riga 84: | ||
With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" | With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" | ||
. | .Background = Color.White | ||
End With | End With | ||
End | |||
Public Sub DrawingArea1_Draw() | |||
Dim x, y, r, t As | Dim x, y, r, t As Single | ||
x = DrawingArea1.W / 2 | x = DrawingArea1.W / 2 | ||
y = DrawingArea1.H / 2 | y = DrawingArea1.H / 2 | ||
<FONT Color=gray>' ''Lunghezza del raggio della circonferenza:''</font> | <FONT Color=gray>' ''Lunghezza del raggio della circonferenza:''</font> | ||
r = 100 | r = 100 | ||
With Paint | |||
.Brush = .Color(Color.Red) | |||
<FONT Color=gray>' ''Il ciclo disegna l'arco della circonferenza:''</font> | <FONT Color=gray>' ''Il ciclo disegna l'arco della circonferenza:''</font> | ||
For t = 0 To 360 <FONT Color=gray>' ''Per maggiore dettaglio si potrà aggiungere: '''Step 0.25'''''</font> | |||
.Arc(x + (r * Cos(Rad(t))), y + (r * Sin(Rad(t))), 0.8, Rad(0), Rad(360), False) | |||
.Fill | |||
Next | |||
Paint.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 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. | |||
<BR>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_in_una_DrawingArea_dei_punti#Disegnare_punto_per_punto_un_cerchio|Disegnare punto per punto un cerchio]] | |||
Versione attuale delle 12:53, 10 ago 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 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 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 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 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