Disegnare un cerchio con le Classi "Draw" e "Paint"
Per disegnare un cerchio all'interno di una DrawingArea, è possibile utilizzare sia la Classe "Draw" che la Classe "Paint".
Disegnare un cerchio con la Classe "Draw"
La Classe Draw ci consente di disegnare un cerchio mediante il metodo ".Circle()".
Esempio:
Public Sub DrawingArea1_Draw() With Draw .FillStyle = Fill.Dense12 .FillColor = Color.Red .Circle(100, 100, DrawingArea1.W / 6, Rad(0), Rad(360)) .End End With End
oppure anche mediante il metodo ".Ellipse()" impostando ovviamente uguali valori al 3° ed al 4° parametro:
Public Sub DrawingArea1_Draw() With Draw .FillStyle = Fill.Solid .FillColor = Color.Red .Ellipse(100, 100, DrawingArea1.W / 6, DrawingArea1.W / 6, Rad(0), Rad(360)) .End End With End
Conoscendo raggio e centro di una circonferenza, nonché il relativo angolo, è possibile disegnare un cerchio, o parte di esso, mediante il Metodo ".Point()".
Si provvederà, in particolare, a disegnare ciascun punto della circonferenza del cerchio, individuato da due coordinate, e che verrà così ottenuto:
punto = (x , y)
laddove le due coordinate x e y sono a loro volta così ottenute:
x = x_a + r * cosθ y = y_o + r * sinθ
x_a e y_o sono rispettivamente ascissa e l'ordinata del centro della circonferenza;
r è il raggio della circonferenza;
θ è l'angolo corrispondente al punto da determinare e conseguentemente da disegnare.
Mostriamo di seguito un semplice codice esemplificativo, con il quale verrà disegnato punto per punto un cerchio all'interno di una DrawingArea:
Public Sub Form_Open() Dim x, y, x_a, y_o, r, an As Short Me.Show DrawingArea1.Cached = True x_a = 200 ' Rappresenta la distanza X dal punto 0 (angolo in alto a sinistra) della "DrawingArea" y_o = 200 ' Rappresenta la distanza Y dal punto 0 (angolo in alto a sinistra) della "DrawingArea" r = 100 For an = 1 To 360 ' Rappresenta l'angolo della circonferenza x = x_a + r * Cos(Rad(an)) y = y_o + r * Sin(Rad(an)) Print x, y Wait 0.01 With Draw .Begin(DrawingArea1) .Point(x, y) .End End With Next End
Da notare che:
la seguente impostazione:
x_a + r * Cos(Rad(an)) y_o + r * Sin(Rad(an))
disegnerà l'arco in senso orario;
la seguente impostazione:
x_a + r * Cos(Rad(an)) y_o - r * Sin(Rad(an))
disegnerà l'arco in senso orario.
Provare anche le altre due possibilità:
x_a - r * Cos(Rad(an)) y_o - r * Sin(Rad(an))
e
x_a - r * Cos(Rad(an)) y_o + r * Sin(Rad(an))
Disegnare un cerchio con la Classe "Paint"
La Classe Paint ci consente di disegnare un cerchio mediante il metodo "Ellipse()".
Per ottenere un cerchio vuoto, ossia nel quale sia visibile soltanto la circonferenza, si utilizzerà anche il metodo .Stroke :
Public Sub DrawingArea1_Draw() With Paint .Brush = Paint.Color(Color.Red) .Ellipse(100, 10, 100, 100) .Stroke .End End With End
Per ottenere invece un cerchio pieno, ossia colorato anche al suo interno, si dovrà utilizzare il metodo .Fill:
Public Sub DrawingArea1_Draw() With Paint .Brush = Paint.Color(Color.Red) .Ellipse(100, 10, 100, 100) .Fill .End End With End
E' possibile disegnare un cerchio anche disegnandolo punto per punto mediante una formula trigonometrica:
Public Sub DrawingArea1_Draw() Dim x, y, r, t As Integer x = 100 y = 100 r = 100 For t = 0 To 360 Paint.FillRect(x + (r * Cos(t)), y + (r * Sin(t)), 1, 1, Color.Black) Next Paint.End End