Casino online









Mercato forex







Appunti



Creare sfumature di colore con Graphics
Nella lezione sulla grafica si è visto come poter disegnare molte entità, ma solo in modo statico, compatto, di uno stesso colore. In questo tutorial spiegherò come modulare il colore creando delle gradevoli sfumature.
A questo scopo bisogna utilizzare gli oggetti ColorBlend e LinearGradientBrush, entrambi definiti nel namespace System.Drawing.Drawing2D. Prima di tutto bisogna inizializzare un nuovo pennello: il costruttore di LinearGradientBrush accetta quattro parametri, nell'ordine, il punto in cui iniziare il gradiente, il punto in cui terminare, il colore iniziale e quello finale. Ad esempio:
'Questo pennello parte dal punto (9, 9) e sfuma dal trasparente
'fino al nero nel punto (70, 70)
Dim Brush As New LinearGradientBrush(New Point(9, 9), New Point(70, 70), _
    Color.Transparent, Color.Black)
Successivamente bisogna creare un oggetto ColorBlend che ha la funzione di definire da dove a dove e con quali colori si debbano sfumare i colori, poiché le sfumature possono essere composte anche da tre o quattro componenti diverse. Sembra inutile, ma esso viene usato per calcolare e colorare in modo esatto i punti. Il suo costruttore accetta un intero che specifica quanti siano i colori da considerare.
'Crea un nuovo oggetto sfumatura a due colori
Dim Blend As New ColorBlend(2)
'Imposta i rispettivi colori iniziale e finale
Blend.Colors = New Color() {Drawing.Color.Transparent, Color.Black}
'E le posizioni nella sfumatura. Tali posizioni devono essere
'espresse da un numero decimale compreso tra 0 e 1: il primo deve
'sempre essere zero e l'ultimo sempre 1. In questo caso, dato che ci
'sono solo due colori, il primo occuperà la posizione 0
'e il secondo la 1
Blend.Positions = New Single() {0.0, 1.0}
'Infine collega i due oggetti
Brush.InterpolationColors = Blend
La proprietà InterpolationColors è un oggetto ColorBlend che aiuta il pennello nei calcoli di interpolazione. Supponendo che questo codice sia inserito nell'evento Paint di un Form, si avrà:
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) _ 
    Handles MyBase.Paint
    Dim Brush As New LinearGradientBrush( _
        New Point(9, 9), New Point(70, 70), _
        Color.Transparent, Color.Black)
    Dim Blend As New ColorBlend(2)
    
    Blend.Colors = New Color() {Drawing.Color.Transparent, Color.Black}
    Blend.Positions = New Single() {0.0, 1.0}
    Brush.InterpolationColors = Blend
    e.Graphics.FillRectangle(Brush, New Rectangle(10, 10, 60, 60))
End Sub
Con questo risultato:


Risultato

Ho usato questo approccio nel mio programma Totem Charting:


Totem Charting






 

The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.