CGDI+编程教程Word文档格式.docx
《CGDI+编程教程Word文档格式.docx》由会员分享,可在线阅读,更多相关《CGDI+编程教程Word文档格式.docx(45页珍藏版)》请在冰豆网上搜索。
![CGDI+编程教程Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/29/f0772efb-1156-4f87-8988-bf59481c8ad9/f0772efb-1156-4f87-8988-bf59481c8ad91.gif)
7.1.2Graphics类
Graphics类封装一个GDI+绘图图面,提供将对象绘制到显示设备的方法,Graphics与特定的设备上下文关联。
画图方法都被包括在Graphics类中,在画任何对象(例如:
Circle,Rectangle)时,我们首先要创建一个Graphics类实例,这个实例相当于建立了一块画布,有了画布才可以用各种画图方法进行绘图。
绘图程序的设计过程一般分为两个步骤:
(一)创建Graphics对象;
(二)使用Graphics对象的方法绘图、显示文本或处理图像。
通常我们使用下述三种方法来创建一个Graphics对象。
方法一、利用控件或窗体的Paint事件中的PainEventArgs
在窗体或控件的Paint事件中接收对图形对象的引用,作为PaintEventArgs(PaintEventArgs指定绘制控件所用的Graphics)的一部分,在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。
例如:
//窗体的Paint事件的响应方法
privatevoidform1_Paint(objectsender,PaintEventArgse)
{
Graphicsg=e.Graphics;
}
也可以直接重载控件或窗体的OnPaint方法,具体代码如下所示:
protectedoverridevoidOnPaint(PaintEventArgse)
Paint事件在重绘控件时发生。
方法二、调用某控件或窗体的CreateGraphics方法
调用某控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。
如果想在已存在的窗体或控件上绘图,通常会使用此方法。
Graphicsg=this.CreateGraphics();
方法三、调用Graphics类的FromImage静态方法
由从Image继承的任何对象创建Graphics对象。
在需要更改已存在的图像时,通常会使用此方法。
//名为“g1.jpg”的图片位于当前路径下
Imageimg=Image.FromFile("
g1.jpg"
);
//建立Image对象
Graphicsg=Graphics.FromImage(img);
//创建Graphics对象
1.Graphics类的方法成员
有了一个Graphics的对象引用后,就可以利用该对象的成员进行各种各样图形的绘制,表7.1列出了Graphics类的常用方法成员。
表7.1Graphics类常用方法
名称
说明
DrawArc
画弧。
DrawBezier
画立体的贝尔塞曲线。
DrawBeziers
画连续立体的贝尔塞曲线。
DrawClosedCurve
画闭合曲线。
DrawCurve
画曲线。
DrawEllipse
画椭圆。
DrawImage
画图像。
DrawLine
画线。
DrawPath
通过路径画线和曲线。
DrawPie
画饼形。
DrawPolygon
画多边形。
DrawRectangle
画矩形。
DrawString
绘制文字。
FillEllipse
填充椭圆。
FillPath
填充路径。
FillPie
填充饼图。
FillPolygon
填充多边形。
FillRectangle
填充矩形。
FillRectangles
填充矩形组。
FillRegion
填充区域。
在.NET中,GDI+的所有绘图功能都包括在System、System.Drawing、System.Drawing.Imaging、System.Drawing.Darwing2D和System.Drawing.Text等命名空间中,因此在开始用GDI+类之前,需要先引用相应的命名空间。
2.引用命名空间
在C#应用程序中使用using命令已用给定的命名空间或类,下面是一个C#应用程序引用命名空间的例子:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Data;
usingSystem.ComponentModel;
usingSystem.Drawing;
usingSystem.Drawing.Drawing2D;
usingSystem.Drawing.Imaging;
7.1.3常用画图对象
在创建了Graphics对象后,就可以用它开始绘图了,可以画线、填充图形、显示文本等等,其中主要用到的对象还有:
●Pen:
用来用patterns、colors或者bitmaps进行填充。
●Color:
用来画线和多边形,包括矩形、圆和饼形。
●Font:
用来给文字设置字体格式。
●Brush:
用来描述颜色。
●Rectangle:
矩形结构通常用来在窗体上画矩形。
●Point:
描述一对有序的x,y两个坐标值。
1.Pen类
Pen用来绘制指定宽度和样式的直线。
使用DashStyle属性绘制几种虚线,可以使用各种填充样式(包括纯色和纹理)来填充Pen绘制的直线,填充模式取决于画笔或用作填充对象的纹理。
使用画笔时,需要先实例化一个画笔对象,主要有以下几种方法。
用指定的颜色实例化一只画笔的方法如下:
publicPen(Color);
用指定的画刷实例化一只画笔的方法如下:
publicPen(Brush);
用指定的画刷和宽度实例化一只画笔的方法如下:
publicPen(Brush,float);
用指定的颜色和宽度实例化一只画笔的方法如下:
publicPen(Color,float);
实例化画笔的语句格式如下:
Penpn=newPen(Color.Blue);
或者Penpn=newPen(Color.Blue,100);
Pen常用的属性有以下几个,如表7.2所示:
表7.2Pen常用属性
Alignment
获得或者设置画笔的对齐方式。
Brush
获得或者设置画笔的属性。
Color
获得或者设置画笔的颜色。
Width
获得或者设置画笔的宽度。
2.Color结构
在自然界中,颜色大都由透明度(A)和三基色(R,G,B)所组成。
在GDI+中,通过Color结构封装对颜色的定义,Color结构中,除了提供(A,R,G,B)以外,还提供许多系统定义的颜色,如Pink(粉颜色),另外,还提供许多静态成员,用于对颜色进行操作。
Color结构的基本属性如表7.3所示。
表7.3颜色的基本属性
A
获取此Color结构的alpha分量值,取值(0~255)。
B
获取此Color结构的蓝色分量值,取值(0~255)。
G
获取此Color结构的绿色分量值,取值(0~255)。
R
获取此Color结构的红色分量值,取值(0~255)。
Name
获取此Color结构的名称,这将返回用户定义的颜色的名称或已知颜色的名称(如果该颜色是从某个名称创建的),对于自定义的颜色,将返回RGB值。
Color结构的基本(静态)方法如表7.4所示
表7.4颜色的基本方法
FromArgb
从四个8位ARGB分量(alpha、红色、绿色和蓝色)值创建Color结构。
FromKnowColor
从指定的预定义颜色创建一个Color结构。
FromName
从预定义颜色的指定名称创建一个Color结构。
Color结构变量可以通过已有颜色构造,也可以通过RGB建立,例如:
Colorclr1=Color.FromArgb(122,25,255);
Colorclr2=Color.FromKnowColor(KnowColor.Brown);
//KnownColor为枚举类型
Colorclr3=Color.FromName("
SlateBlue"
在图像处理中一般需要获取或设置像素的颜色值,获取一幅图像的某个像素颜色值的具体步骤如下:
(1)定义Bitmap
BitmapmyBitmap=newBitmap("
c:
\\MyImages\\TestImage.bmp"
(2)定义一个颜色变量把在指定位置所取得的像素值存入颜色变量中
Colorc=newColor();
c=myBitmap.GetPixel(10,10);
//获取此Bitmap中指定像素的颜色。
(3)将颜色值分解出单色分量值
intr,g,b;
r=c.R;
g=c.G;
b=c.B;
3.Font类
Font类定义特定文本格式,包括字体、字号和字形属性。
Font类的常用构造函数是publicFont(string字体名,float字号,FontStyle字形),其中字号和字体为可选项和publicFont(string字体名,float字号),其中“字体名”为Font的FontFamily的字符串表示形式。
下面是定义一个Font对象的例子代码:
FontFamilyfontFamily=newFontFamily("
Arial"
Fontfont=newFont(fontFamily,16,FontStyle.Regular,GraphicsUnit.Pixel);
字体常用属性如表7.5所示。
表7.5字体的常用属性
Bold
是否为粗体。
FontFamily
字体成员。
Height
字体高。
Italic
是否为斜体。
字体名称。
Size