常用画图对象
在创建了Graphics对象后,就可以用它开始绘图了,可以画线、填充图形、显示文本等等,其中主要用到的对象还有:
1 Pen:用来用patterns、colors或者bitmaps进行填充。
2 Color:用来画线和多边形,包括矩形、圆和饼形。
3 Font:用来给文字设置字体格式。
4 Brush:用来描述颜色。
5 Rectangle:矩形结构通常用来在窗体上画矩形。
6 Point:描述一对有序的x,y两个坐标值。
1. Pen类
Pen用来绘制指定宽度和样式的直线。使用DashStyle属性绘制几种虚线,可以使用各种填充样式(包括纯色和纹理)来填充Pen绘制的直线,填充模式取决于画笔或用作填充对象的纹理。
使用画笔时,需要先实例化一个画笔对象,主要有以下几种方法。
用指定的颜色实例化一只画笔的方法如下:
public Pen(Color);
用指定的画刷实例化一只画笔的方法如下:
public Pen(Brush);
用指定的画刷和宽度实例化一只画笔的方法如下:
public Pen(Brush, float);
用指定的颜色和宽度实例化一只画笔的方法如下:
public Pen(Color, float);
实例化画笔的语句格式如下:
Pen pn=new Pen(Color.Blue);
或者Pen pn=new Pen(Color.Blue,100);
Pen常用的属性有以下几个,如下表所示:
Pen常用属性
名称 |
说明 |
Alignment |
获得或者设置画笔的对齐方式。 |
Brush |
获得或者设置画笔的属性。 |
Color |
获得或者设置画笔的颜色。 |
Width |
获得或者设置画笔的宽度。 |
2.Color结构
在自然界中,颜色大都由透明度(A)和三基色(R,G,B)所组成。在GDI+中,通过Color结构封装对颜色的定义,Color结构中,除了提供(A,R,G,B)以外,还提供许多系统定义的颜色,如Pink(粉颜色),另外,还提供许多静态成员,用于对颜色进行操作。Color结构的基本属性如下表所示。
颜色的基本属性
名称 |
说明 |
A |
获取此Color结构的alpha分量值,取值(0~255)。 |
B |
获取此Color结构的蓝色分量值,取值(0~255)。 |
G |
获取此Color结构的绿色分量值,取值(0~255)。 |
R |
获取此Color结构的红色分量值,取值(0~255)。 |
Name |
获取此Color结构的名称,这将返回用户定义的颜色的名称或已知颜色的名称(如果该颜色是从某个名称创建的),对于自定义的颜色,将返回RGB值。 |
Color结构的基本(静态)方法如下表所示
颜色的基本方法
名称 |
说明 |
FromArgb |
从四个8位ARGB分量(alpha、红色、绿色和蓝色)值创建Color结构。 |
FromKnowColor |
从指定的预定义颜色创建一个Color结构。 |
FromName |
从预定义颜色的指定名称创建一个Color结构。 |
Color结构变量可以通过已有颜色构造,也可以通过RGB建立,例如:
Color clr1 = Color.FromArgb(122,25,255);
Color clr2 = Color.FromKnowColor(KnowColor.Brown);//KnownColor为枚举类型
Color clr3 = Color.FromName("SlateBlue");
在图像处理中一般需要获取或设置像素的颜色值,获取一幅图像的某个像素颜色值的具体步骤如下:
(1)定义Bitmap
Bitmap myBitmap = new Bitmap("c:\\MyImages\\TestImage.bmp");
(2)定义一个颜色变量把在指定位置所取得的像素值存入颜色变量中
Color c = new Color();
c = myBitmap.GetPixel(10,10);//获取此Bitmap中指定像素的颜色。
(3)将颜色值分解出单色分量值
int r,g,b;
r= c.R;
g=c.G;
b=c.B;
3. Font类
Font类定义特定文本格式,包括字体、字号和字形属性。Font类的常用构造函数是public Font(string 字体名,float 字号,FontStyle 字形),其中字号和字体为可选项和public Font(string 字体名,float 字号),其中“字体名”为Font的FontFamily的字符串表示形式。下面是定义一个Font对象的例子代码:
FontFamily fontFamily = new FontFamily("Arial");
Font font = new Font(fontFamily,16,FontStyle.Regular,GraphicsUnit.Pixel);
字体常用属性如下表所示。
字体的常用属性
名称 |
说明 |
Bold |
是否为粗体。 |
FontFamily |
字体成员。 |
Height |
字体高。 |
Italic |
是否为斜体。 |
Name |
字体名称。 |
Size |
字体尺寸。 |
SizeInPoints |
获取此 Font对象的字号,以磅为单位。 |
Strikeout |
是否有删除线。 |
Style |
字体类型。 |
Underline |
是否有下划线。 |
Unit |
字体尺寸单位。 |
4.Brush类
Brush类是一个抽象的基类,因此它不能被实例化,我们总是用它的派生类进行实例化一个画刷对象,当我们对图形内部进行填充操作时就会用到画刷,关于画刷在下章中有详细讲解。
5. Rectangle结构
存储一组整数,共四个,表示一个矩形的位置和大小。矩形结构通常用来在窗体上画矩形,除了利用它的构造函数构造矩形对象外,还可以使用Rectangle结构的属性成员,其属性成员如下表所示。
Rectangle结构属性
名称 |
说明 |
Bottom |
底端坐标 |
Height |
矩形高 |
IsEmpty |
测试矩形宽和高是否为0 |
Left |
矩形左边坐标 |
Location |
矩形的位置 |
Right |
矩形右边坐标 |
Size |
矩形尺寸. |
Top |
矩形顶端坐标 |
Width |
矩形宽 |
X |
矩形左上角顶点X坐标 |
Y |
矩形左上角顶点Y坐标 |
Retangle结构的构造函数有以下两个:
//用指定的位置和大小初始化Rectangle类的新实例。
public Retangle(Point,Size);//Size结构存储一个有序整数对,通常为矩形的宽度和高度。
和
public Rectangle(int,int,int,int);
6. Point结构
用指定坐标初始化Point类的新实例。这个结构很像C++中的Point结构,它描述了一对有序的x,y两个坐标值,其构造函数为:public Point(int x,int y);其中x为该点的水平位置;y为该点的水垂直位置。下面是构造Point对象的例子代码:
Point pt1=new Point(30,30);
Point pt2=new Point(110,100);