GDI+基础知识——通过画刷构建画笔
先看效果:

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(); }
浙公网安备 33010602011771号