//原理分析同上篇,注释就不多做了
private void button1_Click(object sender, EventArgs e)
{
//两边的颜色和中间的颜色
Color sideColor = System.Drawing.ColorTranslator.FromHtml(this.textBox1.Text.ToString());
Color midColor = System.Drawing.ColorTranslator.FromHtml(this.textBox2.Text.ToString());
int height=100;
float RedColorStep = (float)(sideColor.R - midColor.R) * 2 / height;
float GreenColorStep = (float)(sideColor.G - midColor.G) * 2 / height;
float BlueColorStep = (float)(sideColor.B - midColor.B) * 2 / height;
float redColor = sideColor.R;
float greenColor = sideColor.G;
float blueColor = sideColor.B;
Bitmap bm = new Bitmap(100, height);
for (int i = 0; i < height; i++)
{
if (redColor > 255) { redColor = 255; }
if (redColor < 0) { redColor = 0; }
if (greenColor > 255) { greenColor = 255; }
if (greenColor < 0) { greenColor = 0; }
if (blueColor > 255) { blueColor = 255; }
if (blueColor < 0) { blueColor = 0; }
for (int j = 0; j < 100; j++)
{
bm.SetPixel(j, i, Color.FromArgb((int)redColor, (int)greenColor, (int)blueColor));
}
//通过递变的增量的符号改变扭转颜色的渐变方向
if (i < 50)
{
redColor -= RedColorStep;
greenColor -= GreenColorStep;
blueColor -= BlueColorStep;
}
else
{
redColor += RedColorStep;
greenColor += GreenColorStep;
blueColor += BlueColorStep;
}
}
Graphics g = this.CreateGraphics();
g.DrawImage(bm, 10, 150);
bm.Save("c:/b.gif");
}