一.基于WIndows窗体设计里的图形绘制
运用C#语言进行图形绘制是进行Windows窗体设计一个很重要的部分。
这篇博文目的:实现用Graphic在一个指定画布上进行图形绘制,进行上色填充,实现渐变字和艺术字。
控件需要:button,panel,textbox等
二.图形绘制
在button1里实现绘制一个正方形,再在正方形里进行椭圆的绘制,需要掌握的是用Graphic方法是一个底板当作画布。图形绘制是用pen来实现,图形绘制在创建的graphics里有对应的方法,参数为画笔,和坐标和长宽。
Graphics graphics=panel1.CreateGraphics();//该方法功能,将应用该方法的对象都可以当画布来使用.用图像类来接收画布
Pen pen =new Pen(Color.Black, 5);
graphics.DrawRectangle(pen, 20, 50, 100, 100);//画矩形
graphics.DrawEllipse(pen, 20, 50, 100, 100);//椭圆是绘制矩形的内切椭圆
三.填充上色
填充上色使用brush来实现,brush需要一般参数需要颜色color,同时存在不同的brush创建方式,需要的不同的参数,定义了brush,再可以用graphics的填充函数来对已有图形填充。
Color color = Color.FromArgb(255,Color.Pink);
//ColorTranslator()//该方法可以把标准的颜色卡号转化
Brush brush = new SolidBrush(color);
Brush brush1 = new HatchBrush(HatchStyle.Percent75, color);
graphics.FillEllipse(brush, 20, 50, 100, 100);//画完之后用brush去填充颜色
graphics.FillEllipse(brush1, 20, 50, 100, 100);
四.渐变字实现
渐变字的实现:在该代码中渐变字的实现思路是,graphics有DrawString的方法,相当于写了一串字,而实现是用LinearGradientBrush方法定义渐变brush,用这个来给字填充渐变色,实现效果,即定义了渐变brush,这个需要两种颜色和point渐变点。
Point point = new Point(20,20);
Point point1 = new Point(50, 50);
PointF pointF=new PointF(1,1);
Font font = new Font("楷体", 20);
Brush brush2 = new LinearGradientBrush(point,point1,Color.Red,color);//需要的point就是要进行渐变的东西的开始渐变的点
//用这里的brush2来进行图形的渐变填充
graphics.FillEllipse(brush2, 20, 50, 100, 100);
/使用LinearGradientBrush实现渐变色字体,这个是事先用画图的写出一串字,再用brush实现渐变
Color c = ColorTranslator.FromHtml("#bb7070");
Brush brush3 = new LinearGradientBrush(point, point1, color, c);//里面的颜色就是这个brush将字体实现渐变的颜色
string text = "学会了吗?";
graphics.DrawString(text,font,brush3,pointF);
五.艺术字实现
艺术字实现思路:在该代码中艺术字的实现与渐变字不一样,是先用GraphicsPath建立文本对象,再用AddString添加相应格式大小颜色,再放在画板上。
Graphics graphics = panel2.CreateGraphics();
// 创建字体和颜色
Font font = new Font("方正舒体", 50, FontStyle.Italic); // 注意这里直接设置了Italic样式
Color c = ColorTranslator.FromHtml("#ff44ff"); // 确保颜色代码是正确的
Brush brush = new SolidBrush(c);
// 定义文本位置
PointF point = new PointF(30, 50);
// 创建一个StringFormat对象来定义文本的布局(如果需要的话)
StringFormat format = new StringFormat();
// 可以设置format的属性来控制文本的布局,例如对齐方式等
// 使用GraphicsPath和AddString来添加文本到路径中
// 注意:AddString的参数需要一些调整
GraphicsPath path = new GraphicsPath();
// 这里的参数依次是:字符串、字体族、样式、字体大小、位置、StringFormat
path.AddString(textBox1.Text, font.FontFamily, (int)FontStyle.Italic, font.Size, point, format);
// 使用Graphics对象来填充或绘制路径(这里使用填充) 上面解决的是生成什么样的艺术字的问题,这里就进行填充就好了
graphics.FillPath(brush, path);
六.扩展
我们有时候想在一个图片上进行操作,思路也就是把一个图片当作画板即可。
//实现在一个图片上绘制一个文本
// 创建一个新的Bitmap对象来绘制,以避免直接修改PictureBox的Image
Bitmap bmp = new Bitmap(pictureBox1.Image);//需要picturebox控件并添加图片
// 获取Graphics对象
Graphics g = Graphics.FromImage(bmp);
七.效果展示
八.源码地址
源码地址:田扬帅/windows程序设计