Differenze tra le versioni di "Istruzioni essenziali per disegnare su una DrawingArea"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
La [https://gambaswiki.org/wiki/comp/gb.qt4/drawingarea DrawingArea] esercita il suo precipuo compito di area di disegno mediante e all'interno del suo Evento "_Draw()".
+
La [https://gambaswiki.org/wiki/comp/gb.qt4/drawingarea DrawingArea] esercita il suo precipuo compito di area di disegno mediante e all'interno del suo Evento "'''_Draw()'''".
 
<BR><U>E' nella routine dell'Evento "_Draw()", dunque, che si devono porre le istruzione necessarie per disegnare sulla superficie della ''DrawingArea''</u>.
 
<BR><U>E' nella routine dell'Evento "_Draw()", dunque, che si devono porre le istruzione necessarie per disegnare sulla superficie della ''DrawingArea''</u>.
 
<BR>La funzione utilizzata per disegnare sulla ''DrawingArea'' è [https://gambaswiki.org/wiki/comp/gb.qt4/paint PAINT].
 
<BR>La funzione utilizzata per disegnare sulla ''DrawingArea'' è [https://gambaswiki.org/wiki/comp/gb.qt4/paint PAINT].
Riga 29: Riga 29:
 
     .Brush = .Color(clr)
 
     .Brush = .Color(clr)
 
     .LineWidth = 2.0
 
     .LineWidth = 2.0
     .Arc(DrawingArea1.W / 2, DrawingArea1.H / 2, 100, Rad(0), Rad(360), False)
+
     .Arc(DrawingArea1.W / 2, DrawingArea1.H / 2, DrawingArea1.W * 0.2, Rad(0), Rad(360), False)
 
     .Stroke
 
     .Stroke
 
     .End
 
     .End
Riga 41: Riga 41:
 
   clr = Color.Blue
 
   clr = Color.Blue
 
   
 
   
  <FONT Color=gray>' ''Il Metodo ".Refresh()" della "DrawingArea" invoca l'Evento "_Draw()" determinando così la ripetizione del disegno:''</font>
+
  <FONT Color=gray>' ''Il Metodo ".Refresh()" della "DrawingArea" invoca l'Evento "_Draw()" <U>determinando così la ripetizione del disegno</u>:''</font>
 
   DrawingArea1<FONT Color=blue><B>.Refresh</b></font>
 
   DrawingArea1<FONT Color=blue><B>.Refresh</b></font>
 
   
 
   
 
  End
 
  End

Versione attuale delle 16:27, 21 ott 2024

La DrawingArea esercita il suo precipuo compito di area di disegno mediante e all'interno del suo Evento "_Draw()".
E' nella routine dell'Evento "_Draw()", dunque, che si devono porre le istruzione necessarie per disegnare sulla superficie della DrawingArea.
La funzione utilizzata per disegnare sulla DrawingArea è PAINT.

In via generale all'attivarsi del Contenitore (ad esempio un Form ) che ospita la DrawingArea, si solleva automaticamente l'Evento "_Draw()" della DrawingArea.

Mostriamo un semplice esempio pratico, nel quale si disegnerà un cerchio al centro della DrawingArea:

Public Sub DrawingArea1_Draw()

' Si disegna con le risorse della Classe "Paint":
 With Paint
   .Arc(DrawingArea1.W / 2, DrawingArea1.H / 2,  DrawingArea1.W * 0.2, Rad(0), Rad(360), False)
   .Stroke
' Alla fine si chiude l'attività del disegno:
   .End
 End With

End

Può accadere che si intenda richiamare arbitrariamente, secondo le necessità del codice o dell'utente, la funzione del disegno, che - come sappiamo - avviene con la sollevazione dell'Evento "_Draw()" della Classe DrawingArea.
Per far sollevare arbitrariamente (su richiesta) l'Evento "_Draw()" della DrawingArea si utilizza il Metodo ".Refresh()" della DrawingArea.

Mostriamo un esempio, nel quale all'apertura del Form principale si disegnerà sulla superficie della DrawingArea un cerchio rosso; cliccando poi su un Button, anch'esso posto sul Form, si ridisegnerà il cerchio, ma con circonferenza di colore blu.

Private clr As Integer = Color.Red


Public Sub DrawingArea1_Draw()

 With Paint
   .Brush = .Color(clr)
   .LineWidth = 2.0
   .Arc(DrawingArea1.W / 2, DrawingArea1.H / 2,  DrawingArea1.W * 0.2, Rad(0), Rad(360), False)
   .Stroke
   .End
 End With

End


Public Sub Button1_Click()
 
 clr = Color.Blue

' Il Metodo ".Refresh()" della "DrawingArea" invoca l'Evento "_Draw()" determinando così la ripetizione del disegno:
 DrawingArea1.Refresh

End