Differenze tra le versioni di "Disegnare un cerchio con le Classi "Draw" e "Paint""

Da Gambas-it.org - Wikipedia.
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_un_cerchio_su_una_DrawingArea_con_la_Classe_Paint]]
 
 
 
 
==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'''
 
 
 
====Usare il Metodo "Draw.Point()"====
 
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(Rad(t))), y + (r * Sin(Rad(t))), 1, 1, Color.Red)
 
  Next
 
 
 
  Paint.End
 
 
 
'''End'''
 

Versione delle 10:18, 4 apr 2021