先看效果:
private void CreatePenFromBrush_Click(object sender, System.EventArgs e)
{
Graphics gg = this.CreateGraphics();
gg.SmoothingMode = SmoothingMode.HighQuality;
if(m_Bitmap == null)
{
m_Bitmap = new Bitmap(ClientSize.Width,ClientSize.Height);
gg.Clear(Color.White);
}
Graphics g = Graphics.FromImage(m_Bitmap);
g.SmoothingMode = SmoothingMode.HighQuality;
g.Clear(Color.White);
//构造线性渐变画刷
LinearGradientBrush LineargradientBrush = new LinearGradientBrush(new Rectangle(0,0,10,10),
Color.Blue,Color.Red, LinearGradientMode.ForwardDiagonal);
//从线性渐变画刷中构造画笔
Pen pen = new Pen(LineargradientBrush);
pen.Width = 10;
//绘制矩形
g.DrawRectangle(pen,10,10,100,100);
LinearGradientBrush LineargradientBrush45 = new LinearGradientBrush(
new Rectangle(10,0,40,40),
Color.Yellow,Color.Red,45f,true);
pen = new Pen(LineargradientBrush45);
pen.Width = 40;
g.TranslateTransform(130,0);
g.DrawRectangle(pen,10,10,100,100);
//装入纹理图片
Bitmap image = new Bitmap("butterfly.bmp");
//构造纹理画刷
//TextureBrush tBrush = new TextureBrush(image);
TextureBrush tBrush = new TextureBrush(image,WrapMode.TileFlipXY);
//将画刷传入画笔的构造函数
Pen texturedPen = new Pen(tBrush,50);
//设置贝塞尔曲线的起止点及控制点
Point p1 = new Point(10, 100);
Point c1 = new Point(100, 10);
Point c2 = new Point(350, 350);
Point p2 = new Point(400, 300);
g.TranslateTransform(130,0);
//绘制贝塞尔曲线
g.DrawBezier(texturedPen, p1, c1, c2, p2);
g.FillRectangle(LineargradientBrush45,0,350,200,60);
LineargradientBrush45.Dispose();
gg.DrawImage(m_Bitmap,0,0);
tBrush.Dispose();
image.Dispose();
g.Dispose();
}