2009-09-29 18 views
5

Come posso creare un'immagine gradiente (con una determinata altezza & larghezza, colore iniziale e colore finale) utilizzando C#? Qualcuno ha un semplice frammento di esempio? Grazie!C# Crea immagine sfumatura

risposta

10

È possibile farlo utilizzando un LinearGradientBrush. Per esempio

// using System.Drawing; 
// using System.Drawing.Imaging; 
// using System.Drawing.Drawing2D; 

public static void OutputGradientImage() 
{ 
    using (Bitmap bitmap = new Bitmap(100, 100)) // 100x100 pixels 
    using (Graphics graphics = Graphics.FromImage(bitmap)) 
    using (LinearGradientBrush brush = new LinearGradientBrush(
     new Rectangle(0, 0, 100, 100), 
     Color.Blue, 
     Color.Red, 
     LinearGradientMode.Vertical)) 
    { 
     brush.SetSigmaBellShape(0.5f); 
     graphics.FillRectangle(brush, new Rectangle(0, 0, 100, 100)); 
     bitmap.Save("gradientImage.jpg", ImageFormat.Jpeg); 
    } 
} 
2

LinearGradientBrush è tuo amico qui:

 

    Bitmap bmp = new Bitmap(Width, Height); 
    Graphics g = Graphics.FromImage(bmp); 
    LinearGradientBrush lgb = new LinearGradientBrush(new Point(0, 0), new Point(Width, Height), Color.Black, Color.Red); 
    g.FillRectangle(lgb, 0, 0, Width, Height); 
    bmp.Save("FileName"); 
    lgb.Dispose(); 
    g.Dispose(); 
    bmp.Dispose(); 
 
0
protected override void OnPaintBackground(PaintEventArgs e) 
{ 
    using (Brush b = new LinearGradientBrush(ClientRectangle, Color.Red, Color.Blue, LinearGradientMode.ForwardDiagonal)) 
     e.Graphics.FillRectangle(b, ClientRectangle); 
} 

Questo è quanto di più semplice come si può fare.