2009-02-23 21 views
6

È possibile disegnare una linea utilizzando un colore sfumato?Disegno di una linea con un colore sfumato

Desidero essere in grado di disegnare una linea retta o curva (se possibile) dove a un'estremità della linea è blu e l'altra estremità è rossa.

Inoltre potrebbe esserci la necessità di avere più di un gradiente per riga, ad esempio il colore che va da Blu -> Verde -> Rosso. Sto pensando che questo potrebbe consistere solo di più linee di sfumatura disegnate insieme.

risposta

9
protected override void OnPaint(PaintEventArgs e) 
{ 
    base.OnPaint(e); 

    Graphics graphicsObject = e.Graphics; 

    using (Brush aGradientBrush = new LinearGradientBrush(new Point(0, 0), new Point(50, 0), Color.Blue, Color.Red)) 
    { 
     using (Pen aGradientPen = new Pen(aGradientBrush)) 
     { 
      graphicsObject.DrawLine(aGradientPen, new Point(0, 10), new Point(100, 10)); 
     } 
    } 
} 
+0

Si dovrebbe essere chiamando Dispose ... –

+2

no, non ha bisogno di in questo caso. Il metodo Dispose() verrà chiamato automaticamente dopo il metodo OnPaint. –

+0

Dovrebbe, sulla vernice Pennello e Pennello. Meglio ancora, tenerli vivi come membri e non crearne di nuovi su ogni vernice. – configurator

3

dovrai utilizzare System.Drawing.Drawing2D.LinearGradientBrush invece di System.Drawing.SolidBrush

esempio:

e.Graphics.DrawLine(new Pen(new System.Drawing.Drawing2D.LinearGradientBrush(... 
Problemi correlati