2012-04-09 69 views

回答

2

在此代碼我用圖片框,以 'K' 玩 '我'

private void pictureBox1_Paint(object sender, PaintEventArgs e) 
    { 
     int k = 20; 
     Color mycolor = new Color(); 
     for (int i = 0; i < 10; i++) 
     { 
      mycolor = Color.FromArgb(i * k, i * k, i * k); 
      SolidBrush mybrash = new SolidBrush(mycolor); 
      e.Graphics.FillRectangle((Brush)mybrash, 0 + i * k, 0, k, k); 
     } 
    } 

祝你好運!

4

您需要平均起始顏色和最終顏色之間的顏色。這裏是一個常規,做這一切,使用平均公式在這裏找到:Generate Color Gradient in C#

private void PaintGradientBars(Graphics g, Rectangle r, 
           Color startColor, Color endColor, int numBars) { 
    int rMin = startColor.R; 
    int gMin = startColor.G; 
    int bMin = startColor.B; 
    int rMax = endColor.R; 
    int gMax = endColor.G; 
    int bMax = endColor.B; 
    int left = 0; 

    for (int i = 0; i < numBars; i++) { 
    int rAvg = rMin + (int)((rMax - rMin) * i/numBars); 
    int gAvg = gMin + (int)((gMax - gMin) * i/numBars); 
    int bAvg = bMin + (int)((bMax - bMin) * i/numBars); 
    Color useColor = Color.FromArgb(rAvg, gAvg, bAvg); 

    int width = (r.Width - left)/(numBars - i); 
    using (SolidBrush br = new SolidBrush(useColor)) { 
     g.FillRectangle(br, new Rectangle(left, 0, width, r.Height)); 
    } 
    left += width; 
    } 
} 

然後你做一個簡單的電話:

enter image description here

private void panel1_Paint(object sender, PaintEventArgs e) { 
    PaintGradientBars(e.Graphics, panel1.ClientRectangle, 
        Color.Blue, Color.Green, 5); 
} 

,導致