|
|
(3 versioni intermedie di uno stesso utente non sono mostrate) |
Riga 1: |
Riga 1: |
− | Per disegnare un cerchio all'interno di una ''DrawingArea'', è possibile utilizzare sia la Classe "''Draw''" che la Classe "''Paint''".
| + | #REDIRECT [[Disegnare_in_una_DrawingArea_un_cerchio]] |
− | | |
− | | |
− | ==Disegnare un cerchio con la Classe "''Draw''"==
| |
− | La Classe ''Draw'' ci consente di disegnare un cerchio mediante il metodo ".Circle()".
| |
− | <BR>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;
| |
− | <BR>''r'' è il raggio della circonferenza;
| |
− | <BR>θ è 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
| |
− |
| |
− | <FONT Color=#B22222>x_a</font> = 200 <FONT Color=gray>' ''Rappresenta la distanza X dal punto 0 (angolo in alto a sinistra) della "DrawingArea"</font>
| |
− | <FONT Color=#B22222>y_o</font> = 200 <FONT Color=gray>' ''Rappresenta la distanza Y dal punto 0 (angolo in alto a sinistra) della "DrawingArea"</font>
| |
− | <FONT Color=#B22222>r</font> = 100
| |
− |
| |
− | For <FONT Color=#B22222>an</font> = 1 To 360 <FONT Color=gray>' ''Rappresenta l'angolo della circonferenza</font>
| |
− | <FONT Color=#B22222>x</font> = x_a + r * Cos(Rad(an))
| |
− | <FONT Color=#B22222>y</font> = 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:
| |
− | <BR>la seguente impostazione:
| |
− | x_a + r * Cos(Rad(an))
| |
− | y_o + r * Sin(Rad(an))
| |
− | disegnerà l'arco in senso orario;
| |
− | <BR>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'''
| |