C#--GDI编程:一

本文介绍了C#中GDI编程的基础知识,包括Graphics类的三种获取方式,Pen类用于绘制线条和几何图形的功能,以及Brush类的不同派生类如SolidBrush、HatchBrush、LinearGradientBrush等用于填充颜色的使用。通过实例展示了如何使用Pen类画红色矩形,以及如何利用颜色渐变画笔实现颜色过渡效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#所有的GDI+的函数都保存在:System.Drawing.dll程序集中。

我们在进行GDI编程的时候先要添加这个System.Drawing.dll的引用。

这个程序集里面主要的绘图的命名空间有以下这些:

System.Drawing;
System.Drawing.Text;
System.Drawing.Printing;
System.Drawing.Imaging; 
System.Drawing.Drawing2D; 
System.Drawing.Design;


Graphics类:

这个类相当于一张画布,可以调用绘图方法在这上面绘画。

这个对象的建立方法主要有3种:

1,通过窗体或者控件的Paint方法来获得者个对象。

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
		{
                Graphics g=e.Graphics;
		}

2,通过窗体获得控件的CreateGraphics这个方法来创建这个对象。

Graphics g=this.CreateGraphics();

3,使用Image类的派生类来创建这个对象。

Bitmap b=new Bitmap("ddd.bmp");
Graphics g=Graphics.FromImage(b);

 

Pen类:

顾名思义,这个就是画画的笔了。

它可以用来绘制线条,多边形,曲线,等几何图形。

Pen 对象的主要属性:宽度、样式、颜色。

1、 Pen 对象的创建(4种形式)
Pen p1=new Pen(Color);//创建某一颜色的Pen 对象
Pen p2=new Pen(Brush);//创建某一刷子样式的Pen 对象
Pen p3=new Pen(Brush,float);//创建某一刷子样式并具有相应宽度的的Pen 对象
Pen p4=new Pen(Color,float);//创建某一颜色和相应宽度的Pen 对象

例子:在窗体上面画一个红色的矩形:

Graphics g = this.CreateGraphics();
Pen p = new Pen(Color.Red, 1);
Rectangle rect = new Rectangle(50, 50, 100, 50);//矩形,x轴50,y轴50,宽度100,高度50.
g.DrawRectangle(p, rect);

关于Pen类里面的一些属性你可以自己去尝试做一些demo就能了解了。

下面我们要说的一个类是:

Brush(画刷)类:

这是一个抽象类不能实例化,只能使用它的派生类:

SolidBrush 单色画笔

HatchBrush 背景图案画笔

LinearGradientBrush 颜色渐变画笔

PathGradientBrush 使用路径及复杂的混色渐变画刷

TextureBrush 纹理画刷,通过一张图片来画。

1,SolidBrush 使用单色画笔,用红色填充一个矩形:

 Graphics g = this.CreateGraphics();
 SolidBrush ff = new SolidBrush(Color.Red);
 Rectangle rect = new Rectangle(50, 50, 100, 50);
 g.FillRectangle(ff, rect);


2,HatchBrush 背景图案画笔,画一个具有不同纹理的背景图案:

Graphics g = this.CreateGraphics();
HatchBrush brush = new HatchBrush(HatchStyle.Max,Color.Black,Color.Blue);
Rectangle rect = new Rectangle(50, 50, 100, 50);
g.FillRectangle(brush, rect);

 

3,LinearGradientBrush 颜色渐变画笔

可以给这个画笔指定一个颜色的数组,和颜色位置的数组。这个画笔就会根据这些数组来绘制渐变颜色。

例子1:

Graphics g = this.CreateGraphics();
Rectangle rect = new Rectangle(50, 50, 100, 50);
LinearGradientBrush brush = new LinearGradientBrush(rect,Color.Red,Color.Blue,LinearGradientMode.Vertical);
g.FillRectangle(brush, rect);

例子2:多色渐变的实现

Graphics g = this.CreateGraphics();
            Rectangle rect = new Rectangle(50, 50, 100, 50);
            LinearGradientBrush brush = new LinearGradientBrush(rect, Color.Red, Color.Blue, LinearGradientMode.Vertical);
            Color[] colors = new Color[4];//定义一个颜色数组
            colors[0] = Color.Beige;
            colors[1] = Color.Blue;
            colors[2] = Color.Red;
            colors[3] = Color.Yellow;

            ColorBlend blend = new ColorBlend();
            blend.Positions = new float[] { 0.0f, 0.35f, 0.45f, 1.0f };
            blend.Colors = colors;
            brush.InterpolationColors = blend;

            g.FillRectangle(brush, rect);


 


 


 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值