线性渐变画刷的基本使用
Demo:
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.Clear(Color.White);
Pen myPen = new Pen(Color.Black,3);
Rectangle rect1 = new Rectangle(10,10,200,100);
//使用2个点定义渐变区域
LinearGradientBrush lBrush = new LinearGradientBrush(
new Point(10, 10),
new Point(10, 50),
Color.Red, //起点颜色
Color.Blue); //终点颜色
//填充矩形区域并绘制其边框
g.FillRectangle(lBrush,rect1);
g.DrawRectangle(myPen,rect1);
Rectangle rect2 = new Rectangle(250,10,200,100);
//使用矩形来定义渐变区域
LinearGradientBrush lBrush2 = new LinearGradientBrush(
rect2,
Color.Pink,
Color.Green,
LinearGradientMode.BackwardDiagonal);
//填充矩形区域并绘制其边框
g.FillRectangle(lBrush2,rect2);
g.DrawRectangle(myPen,rect2);
Rectangle rect3 = new Rectangle(500,10,200,100);
//使用指定的偏转角度来构建画刷
LinearGradientBrush lBrush3 = new LinearGradientBrush(
rect3,
Color.LightYellow,
Color.Red,
60.0f);
g.FillRectangle(lBrush3,rect3);
g.DrawRectangle(myPen,rect3);
myPen.Dispose();
lBrush.Dispose();
lBrush2.Dispose();
lBrush3.Dispose();
}
在上Demo中使用了线性渐变画刷的渐变模式,在GDI+ 的 LinearGradientMode 枚举中定义了四种渐变模式,如下表:
渐变画刷的四种颜色渐变模式:
/渐变画刷的四种颜色渐变模式
Graphics g = e.Graphics;
g.Clear(Color.White);
//定义矩形
Rectangle rect1 = new Rectangle(10, 10, 200, 100);
Rectangle rect2 = new Rectangle(250, 10, 200, 100);
Rectangle rect3 = new Rectangle(10, 200, 200, 100);
Rectangle rect4 = new Rectangle(250, 200, 200, 100);
Pen myPen = new Pen(Color.Black, 3);
//Horizontal
LinearGradientBrush lBrush = new LinearGradientBrush(
rect1,
Color.Yellow,
Color.Green,
LinearGradientMode.Horizontal);
g.FillRectangle(lBrush, rect1);
//Vertical
LinearGradientBrush lBrush2 = new LinearGradientBrush(
rect2,
Color.Yellow,
Color.Green,
LinearGradientMode.Vertical);
g.FillRectangle(lBrush2, rect2);
//ForwardDiagonal
LinearGradientBrush lBrush3 = new LinearGradientBrush(
rect3,
Color.Yellow,
Color.Green,
LinearGradientMode.ForwardDiagonal);
g.FillRectangle(lBrush3, rect3);
//BackwardDiagonal
LinearGradientBrush lBrush4 = new LinearGradientBrush(
rect4,
Color.Yellow,
Color.Green,
LinearGradientMode.BackwardDiagonal);
g.FillRectangle(lBrush4, rect4);
myPen.Dispose();
lBrush.Dispose();
lBrush2.Dispose();
lBrush3.Dispose();
lBrush4.Dispose();
效果图: