GDI+基础知识——通过画刷构建画笔

来源:互联网 发布:防盗窗面积算法 编辑:程序博客网 时间:2024/05/18 14:45

先看效果:

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();
}