C#GDI+图形绘制Word文档下载推荐.docx
- 文档编号:17548514
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:34
- 大小:31.17KB
C#GDI+图形绘制Word文档下载推荐.docx
《C#GDI+图形绘制Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C#GDI+图形绘制Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
Colorred=Color.FromArgb(255,0,0);
Colorgreen=Color.FromArgb(0,255,0);
Colorblue=Color.FromArgb(0,0,255);
获取系统定义的颜色
使用FromArgb()构造颜色是一种非常灵活的技巧,因为它表示我们可以指定人眼能辨识出的任何颜色。
但是,如果要得到一种简单、标准、众所周知的纯色,例如红色或蓝色,命名想要的颜色是比较简单的。
因此Microsoft还在Color中提供了许多静态属性,每个属性都返回一种命名的颜色。
在下面的示例中,把窗口的背景色设置为白色时,就使用了其中一种属性:
this.BackColor=Color.White;
//
与以下语句效果一样
//this.BackColor=Color.FromArgb(255,255,255);
8.1.2
画笔和钢笔
本节介绍Pen和Brush,在绘制图形时需要使用它们。
Pen用于告诉graphics实例如何绘制线条。
Brush如何填充区域。
例如,Pen用于绘制矩形和椭圆的边框。
如果需要把这些图形绘制为实心的,就要使用画笔指定如何填充它们。
1画笔
GDI+有几种不同类型的画笔。
每种画笔都由一个派生自抽象类System.Drawing.Brush的类实例来表示。
最简单的画笔为System.Drawing.SolidBrush。
它是单色画笔,用于填充图形形状,如矩形、椭圆、扇形、多边形和封闭路径。
ColorcustomColor=Color.FromArgb(192,192,192);
SolidBrushshadowBrush=newSolidBrush(customColor);
或者
SolidBrushshadowBrush=newSolidBrush(Color.Gray);
2与画笔不同,钢笔只用一个类System.Drawing.Pen来表示。
但钢笔比画笔复杂一些,因为它需要指定线条应有多宽(像素),对于一条比较宽的线段,还要确定如何填充该线条中的区域。
PensolidBluePen=newPen(Color.FromArgb(0,0,255));
PensolidWideBluePen=newPen(Color.Blue,4);
8.2
绘图所用到的结构
GDI+使用几个类似的结构来表示坐标或区域。
下面介绍几个结构,它们都是在System.Drawing命名空间中定义的,如表8.1所示。
表
8-1Point、Size及Rectangle结构
结
构
主要的公共属性
Point
X,Y
PointF
Size
Width,Height
SizeF
Rectangle
Left,Right,Top,Bottom,Width,Height,X,Y,Location,Size
RectangleF
8.2.1Point和PointF结构
表示图像的一点,从概念上讲,Point在这些结构中是最简单的,在数学上,它完全等价于一个二维矢量。
我们可以创建一个Point结构:
Pointb=newPoint(20,10);
X和Y都是读写属性,也可以在Point中设置这些值:
Pointa=newPoint();
a.X=20;
b.Y=10;
PointF与Point完全相同,但X和Y属性的类型是float,而不是int。
PointF用于坐标不是整数值的情况。
注意,可以把Point隐式转换为
PointF,但要把PointF转换为Point,必须显式地复制值,或使用下面的3个转换方法Round()、Truncate()和Ceiling()。
Pointb=newPoint();
b.X=(int)abFloat.X;
b.Y=(int)abFloat.Y;
//Point隐式转换为
PointFbFloat1=ab;
//PointF显式转换为
Pointb1=Point.Round(bFloat);
Pointb2=Point.Truncate(bFloat);
Pointb3=Point.Ceiling(bFloat);
8.2.2Size和SizeF结构
与Point和PointF一样,Size也有两个属性。
Size结构用于int类型,SizeF用于float类型,除此之外,Size和
SizeF是完全相同的。
下面主要讨论Size结构。
在许多情况下,Size结构与Point结构是相同的,它也有两个整型属性,表示水平和垂直距离——
主要区别是这两个属性的名称不是X和Y,而是Width
和
Height。
前面的图30-3可以表示为:
Sizeab=newSize(20,10);
严格地讲,Size在数学上与Point表示的含义相同;
但在概念上它使用的方式略有不同。
Point用于说明实体在什么地方,而Size用于说明实体有多大。
8.2.3Rectangle和RectangleF结构
这两个结构表示一个矩形区域(通常在屏幕上)。
与Point
Size一样,这里只介绍Rectangle结构,RectangleF与Rectangle基本相同,但它的属性类型是float,而Rectangle的属性类型是int。
Rectangle可以看作由一个Point
和一个
Size组成,其中Point表示矩形的左上角,Size表示其大小。
它的一个构造函数把Point
Size作为其参数
PointtopLeft=newPoint(0,0);
SizehowBig=newSize(50,50);
RectanglerectangleArea=newRectangle(topLeft,howBig);
8.3绘制图形和线条
System.Drawing.Graphics
有很多方法,利用这些方法可以绘制各种线条、空心图形和实心图形。
表8.2所示的列表并不完整,但给出了主要的方法。
本书只讲解对直线、空实心矩形及椭圆进行绘制,其它图形的绘制感兴趣的同学可以查阅MSDN。
绘制图形的基本方法
方
法
常
见
参
数
绘制的图形
DrawLine
钢笔、起点和终点
一段直线
DrawRectangle
钢笔、位置和大小
空心矩形
DrawEllipse
空心椭圆
FillRectangle
画笔、位置和大小
实心矩形
FillEllipse
实心椭圆
DrawLines
钢笔、点数组
一组线,把数组中的每个点按顺序连接起来
DrawBezier
钢笔、4个点
通过两个端点的一条光滑曲线,剩余的两个点用于控制曲线的形状
DrawCurve
通过点的一条光滑曲线
DrawArc
钢笔、矩形、两个角
由角度定义的矩形中圆的一部分
DrawClosedCurve
与DrawCurve一样,但还要绘制一条用以闭合曲线的直线
DrawPie
矩形中的空心楔形
FillPie
画笔、矩形、两个角
矩形中的实心楔形
DrawPolygon
与DrawLines
一样,但还要连接第一点和最后一点,以闭合绘制的图形
8.3.1
画直线
(1)绘制一条连接两个
Point
结构的线,
publicvoidDrawLine(
Pen
pen,
start,
end
pen,它确定线条的颜色、宽度和样式。
start,Point
结构,它表示要连接的第一个点。
end
,Point
结构,它表示要连接的第二个点。
下面代码绘制如图8.1所示的直线,其颜色分别为黑、红、黄及指定的RGB值,宽度分别为3,5,7,9。
Graphicsg=this.CreateGraphics();
//创建不同颜色及精细的画笔
PenblackPen=newPen(Color.Black,3);
PenredPen=newPen(Color.Red,5);
PenyellowPen=newPen(Color.Yellow,7);
Penmypen=newPen(Color.FromArgb(167,234,89),9);
//绘制黑线
Pointstart1=newPoint(100,100);
Pointend1=newPoint(200,200);
g.DrawLine(blackPen,start1,end1);
//绘制红线
Pointstart2=newPoint(200,100);
Pointend2=newPoint(300,200);
g.DrawLine(redPen,start2,end2);
//绘制黄线
Pointstart3=newPoint(300,100);
Pointend3=newPoint(400,200);
g.DrawLine(yellowPen,start3,end3);
//绘制RGB为(167,234,89)的直线
Pointstart4=newPoint(400,100);
Pointend4=newPoint(500,200);
g.DrawLine(mypen,start4,end4);
图
直线
(2)虚线
的DashStyle属性,可以绘制虚线。
格式为
myPen.DashStlyle=
DashStyle.类型
下面的示例绘制如图8.2所示的虚线,其虚线类型分别为:
Dash,Dot,DashDot,DashDotDot。
blackPen.DashStyle=DashStyle.Dash;
redPen.DashStyle=DashStyle.Dot;
yellowPen.DashStyle=DashStyle.DashDot;
mypen.DashStyle=DashStyle.DashDotDot;
//Createpointsthatdefineline.
Pointstart4=newPoint(400,100);
虚线
(3)直线端点
以使用
对象的属性为直线设置更多特性。
StartCap
属性和
EndCap
属性指定直线端点的外观;
端点可以是平的、方形的、圆形的、三角形的或自定义的形状。
LineJoin
属性用于指定连接的线相互间是斜接的(联接时形成锐角)、斜切的、圆形的还是截断的。
下面的代码绘制如图8.3所示带端点的直线
blackPen.StartCap=LineCap.Flat;
blackPen.EndCap=LineCap.ArrowAnchor;
redPen.StartCap=LineCap.DiamondAnchor;
redPen.EndCap=LineCap.RoundAnchor;
yellowPen.EndCap=LineCap.SquareAnchor;
mypen.EndCap=LineCap.Triangle;
Pointend2=newPoint(300,200);
图8.3
带端点的直线
8.3.2
画空心矩形
绘制由
Rectangle
结构指定的矩形
publicvoidDrawRectangle(
rect
pen
Pen,它确定矩形的颜色、宽度和样式。
rect
表示要绘制的矩形的
结构。
下面代码分别绘制如图8.4所示的矩形,
Graphicsg=this.CreateGraphics();
//blackPen.DashStyle=DashStyle.Dash;
建立矩形.
Rectanglerect=newRectangle(100,100,200,200);
绘制黑色矩形
g.DrawRectangle(blackPen,rect);
//设置矩形虚线的类型
redPen.DashStyle=DashStyle.Dash;
Rectanglerectred=newRectangle(320,100,200,200);
绘制红色矩形
g.DrawRectangle(redPen,rectred);
图8.4
矩形
8.3.3
画实心矩阵
填充
结构指定的矩形的部
格式:
publicvoidFillRectangle(
Brush
brush,
brush
,确定填充特性的
Brush。
,Rectangle
结构,它表示要填充的矩形。
∙
下面代码绘制如图8.5所示的实心矩形
//建立黑色画笔
SolidBrushblackBrush=newSolidBrush(Color.Black);
构建矩形对象.
画黑实心矩形.
g.FillRectangle(blackBrush,rect);
//建立灰色画笔
SolidBrushgrayBrush=newSolidBrush(Color.Gray);
Rectanglerectgray=newRectangle(320,100,200,200);
g.FillRectangle(grayBrush,rectgray);
8.5
实形矩形
8.3.4
画空心椭圆
publicvoidDrawEllipse(
下面代码绘制如图8.6所示的空心椭圆
//构建矩形对象.
Rectanglerect=newRectangle(100,100,200,100);
画空心空心椭圆.
g.DrawEllipse(blackPen,rect);
Rectanglerectgray=newRectangle(320,100,200,100);
//建立灰色画笔
PengrayPen=newPen(Color.Gray,5);
//指定虚线类型
grayPen.DashStyle=DashStyle.DashDotDot;
//绘制虚线椭圆
g.DrawEllipse(grayPen,rectgray);
8.6
8.3.5
绘制弧线
弧线是椭圆的一部分。
若要绘制弧线,可调用
Graphics
类的
DrawArc
方法。
除了
需要有起始角度和仰角以外,DrawEllipse
方法的参数与
方法的参数相同。
publicvoidDrawArc(
RectangleF
rect,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GDI 图形 绘制
![提示](https://static.bdocx.com/images/bang_tan.gif)