Differenze tra le versioni di "Disegnare in una DrawingArea un rettangolo colorato con distinzione sfumata fra i colori"

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:
Per ottenere una distinzione sfumata dei confini fra un colore ed un altro prossimo di un rettangolo disegnato in una ''DrawingArea'', si deve utilizzare il metodo ''.LinearGradient()'' della Classe ''Paint''. Il passaggio da un colore all'altro avviene in modo sfumato sia attraverso la sua dissolvenza sia mediante la sua fusione con la parte dissolta dell'altro colore.  
+
Per ottenere una distinzione sfumata dei confini fra un colore ed un altro prossimo di un rettangolo disegnato in una ''DrawingArea'', si deve utilizzare il Metodo ".LinearGradient()" della Classe ''Paint''. Il passaggio da un colore all'altro avviene in modo sfumato sia attraverso la sua dissolvenza sia mediante la sua fusione con la parte dissolta dell'altro colore.  
 
 
  
 
Mostriamo un semplice esempio, nel quale viene disegnato un rettangolo internamente colorato con quattro colori blu, verde, giallo e rosso, distinti l'uno dall'altro prossimo in modo sfumato:
 
Mostriamo un semplice esempio, nel quale viene disegnato un rettangolo internamente colorato con quattro colori blu, verde, giallo e rosso, distinti l'uno dall'altro prossimo in modo sfumato:
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
  DrawingArea1.Background = Color.White
+
  DrawingArea1.Background = Color.White
 
   
 
   
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub DrawingArea1_Draw()
+
  Public Sub DrawingArea1_Draw()
 
   
 
   
 
   Dim c As Integer[] = [Color.Blue, Color.Green, Color.Yellow, Color.Red]
 
   Dim c As Integer[] = [Color.Blue, Color.Green, Color.Yellow, Color.Red]
 
   Dim f As Float[] = [0, 0.34, 0.67, 1]
 
   Dim f As Float[] = [0, 0.34, 0.67, 1]
 
   
 
   
  With Paint
+
  With Paint
    .Brush = .LinearGradient(10, 40, 300, 40, c, f)
+
    .Brush = .LinearGradient(10, 40, 300, 40, c, f)
    .Rectangle(10, 40, 300, 40)
+
    .Rectangle(10, 40, 300, 40)
    .Fill
+
    .Fill
    .End
+
    .End
  End With
+
  End With
 
   
 
   
  '''End'''
+
  End
  
 
===Disegnare una matrice orizzontale e due matrici verticali, di cui una con la posizione invertita dei colori===
 
===Disegnare una matrice orizzontale e due matrici verticali, di cui una con la posizione invertita dei colori===
Riga 28: Riga 27:
  
 
Mostriamo un esempio, nel quale, oltre a disegnare su una ''DrawingArea'' un'analoga matrice rettangolare estesa in orizzontale e formata da 3 colori, saranno disegnate due matrici verticali, alla seconda delle quali saranno invertiti i colori.
 
Mostriamo un esempio, nel quale, oltre a disegnare su una ''DrawingArea'' un'analoga matrice rettangolare estesa in orizzontale e formata da 3 colori, saranno disegnate due matrici verticali, alla seconda delle quali saranno invertiti i colori.
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   With Me
 
   With Me
Riga 40: Riga 39:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub DrawingArea1_Draw()
+
  Public Sub DrawingArea1_Draw()
 
    
 
    
 
   Dim c As Integer[] = [Color.Green, Color.Yellow, Color.Red]
 
   Dim c As Integer[] = [Color.Green, Color.Yellow, Color.Red]
Riga 66: Riga 65:
 
  <FONT Color=gray>' ''Scrive sulla "DrawingArea":''</font>
 
  <FONT Color=gray>' ''Scrive sulla "DrawingArea":''</font>
 
     .Brush = .Color(Color.Black)
 
     .Brush = .Color(Color.Black)
     .Text("i\nn\nv\ne\nr\nt\ni\nt\na", 240, 100, 10, 10, Align.Left)
+
     .Text("v\ne\nr\nt\ni\nc\na\nl\ne\n\ni\nn\nv\ne\nr\nt\ni\nt\na", 240, 140, 10, 10, Align.Left)
 
     .Fill
 
     .Fill
 
      
 
      
Riga 81: Riga 80:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End

Versione attuale delle 18:24, 4 giu 2024

Per ottenere una distinzione sfumata dei confini fra un colore ed un altro prossimo di un rettangolo disegnato in una DrawingArea, si deve utilizzare il Metodo ".LinearGradient()" della Classe Paint. Il passaggio da un colore all'altro avviene in modo sfumato sia attraverso la sua dissolvenza sia mediante la sua fusione con la parte dissolta dell'altro colore.

Mostriamo un semplice esempio, nel quale viene disegnato un rettangolo internamente colorato con quattro colori blu, verde, giallo e rosso, distinti l'uno dall'altro prossimo in modo sfumato:

Public Sub Form_Open()

 DrawingArea1.Background = Color.White

End


Public Sub DrawingArea1_Draw()

 Dim c As Integer[] = [Color.Blue, Color.Green, Color.Yellow, Color.Red]
 Dim f As Float[] = [0, 0.34, 0.67, 1]

 With Paint
   .Brush = .LinearGradient(10, 40, 300, 40, c, f)
   .Rectangle(10, 40, 300, 40)
   .Fill
   .End
 End With

End

Disegnare una matrice orizzontale e due matrici verticali, di cui una con la posizione invertita dei colori

L'esempio precedente ha mostrato una matrice rettangolare estesa in orizzontale, costituita dai quattro colori impostati nell'array di tipo Intero.

Mostriamo un esempio, nel quale, oltre a disegnare su una DrawingArea un'analoga matrice rettangolare estesa in orizzontale e formata da 3 colori, saranno disegnate due matrici verticali, alla seconda delle quali saranno invertiti i colori.

Public Sub Form_Open()
 
 With Me
   .Width = 480
   .Height = 480
 End With
 
 With DrawingArea1
   .W = Me.Width
   .H = Me.Height
 End With
 
End


Public Sub DrawingArea1_Draw()
 
 Dim c As Integer[] = [Color.Green, Color.Yellow, Color.Red]
 Dim f As Float[] = [0, 0.8, 1]
 
 With Paint
' Imposta la posizione della prima matrice colorata all'interno della "DrawingArea":
   .Translate(DrawingArea1.H * 0.2, 50)
' Imposta la matrice in orizzontale:
   .Brush = .LinearGradient(0, 0, 300, 0, c, f)
' Imposta in orizzontale il rettangolo che conterrà la matrice:
   .Rectangle(0, 0, 300, 50)
   .Fill
   
' Imposta la posizione della seconda matrice colorata all'interno della "DrawingArea":
   .Translate(0, DrawingArea1.H * 0.2)
' Imposta la matrice in verticale:
   .Brush = .LinearGradient(0, 0, 0, 300, c, f)
' Imposta in verticale il rettangolo che conterrà la matrice:
   .Rectangle(0, 0, 50, 300)
   .Fill
' Scrive sulla "DrawingArea":
   .Brush = .Color(Color.Black)
   .Text("v\ne\nr\nt\ni\nc\na\nl\ne\n\ni\nn\nv\ne\nr\nt\ni\nt\na", 240, 140, 10, 10, Align.Left)
   .Fill
   
' Imposta la posizione della terza matrice colorata all'interno della "DrawingArea":
   .Translate(250, DrawingArea1.H * 0.62)
' Imposta l'inversione dei colori costituenti la seconda matrice:
   .Scale(1, -1)
' Imposta la matrice in verticale:
   .Brush = .LinearGradient(0, 0, 0, 300, c, f)
' Imposta in verticale il rettangolo che conterrà la matrice:
   .Rectangle(0, 0, 50, 300)
   .Fill
   .End
 End With
  
End