C#实现图形绘制

一.基于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程序设计

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值