1、Color red = Color.FromArgb(255, 0, 0);Color green = Color.FromArgb(0, 255, 0);Color blue = Color.FromArgb(0, 0, 255);获取系统定义的颜色使用FromArgb()构造颜色是一种非常灵活的技巧,因为它表示我们可以指定人眼能辨识出的任何颜色。但是,如果要得到一种简单、标准、众所周知的纯色,例如红色或蓝色,命名想要的颜色是比较简单的。因此Microsoft还在Color中提供了许多静态属性,每个属性都返回一种命名的颜色。在下面的示例中,把窗口的背景色设置为白色时,就使用了其中一种属性:
2、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.Soli
3、dBrush。它是单色画笔,用于填充图形形状,如矩形、椭圆、扇形、多边形和封闭路径。Color customColor = Color.FromArgb(192,192,192); SolidBrush shadowBrush = new SolidBrush(customColor);或者 SolidBrush shadowBrush = new SolidBrush(Color.Gray);2与画笔不同,钢笔只用一个类System.Drawing.Pen来表示。但钢笔比画笔复杂一些,因为它需要指定线条应有多宽(像素),对于一条比较宽的线段,还要确定如何填充该线条中的区域。Pen solid
4、BluePen = new Pen(Color.FromArgb(0,0,255);Pen solidWideBluePen = new Pen(Color.Blue, 4);8.2绘图所用到的结构GDI+使用几个类似的结构来表示坐标或区域。下面介绍几个结构,它们都是在System.Drawing命名空间中定义的,如表8.1所示。表-1 Point、Size及Rectangle结构结构主要的公共属性PointX,YPointFSizeWidth, HeightSizeFRectangleLeft, Right , Top, Bottom, Width, Height, X, Y, Locati
5、on, SizeRectangleF8.2.1 Point和PointF结构表示图像的一点,从概念上讲,Point在这些结构中是最简单的,在数学上,它完全等价于一个二维矢量。我们可以创建一个Point结构:Point b = new Point(20, 10);X和Y都是读写属性,也可以在Point中设置这些值:Point a = new Point();a.X = 20;b.Y = 10;PointF与Point完全相同,但X和Y属性的类型是float,而不是int。PointF用于坐标不是整数值的情况。注意,可以把Point隐式转换为PointF,但要把PointF转换为Point,必须显
6、式地复制值,或使用下面的3个转换方法Round()、Truncate()和Ceiling()。 Point b = new Point(); b.X = (int)abFloat.X; b.Y = (int)abFloat.Y;/ Point隐式转换为PointF bFloat1 = ab;/ PointF显式转换为 Point b1 = Point.Round(bFloat); Point b2 = Point.Truncate(bFloat); Point b3 = Point.Ceiling(bFloat);8.2.2 Size和SizeF结构与Point和PointF一样,Size也有
7、两个属性。Size结构用于int类型,SizeF用于float类型,除此之外,Size和SizeF是完全相同的。下面主要讨论Size结构。在许多情况下,Size结构与Point结构是相同的,它也有两个整型属性,表示水平和垂直距离主要区别是这两个属性的名称不是X和Y,而是Width和Height。前面的图30-3可以表示为:Size ab = new Size(20,10);严格地讲,Size在数学上与Point表示的含义相同;但在概念上它使用的方式略有不同。Point用于说明实体在什么地方,而Size用于说明实体有多大。8.2.3 Rectangle和RectangleF结构这两个结构表示一个
8、矩形区域(通常在屏幕上)。与PointSize一样,这里只介绍Rectangle结构,RectangleF与Rectangle基本相同,但它的属性类型是float,而Rectangle的属性类型是int。Rectangle可以看作由一个Point和一个Size组成,其中Point表示矩形的左上角,Size表示其大小。它的一个构造函数把PointSize作为其参数Point topLeft = new Point(0,0);Size howBig = new Size(50,50);Rectangle rectangleArea = new Rectangle(topLeft, howBig);
9、8.3绘制图形和线条System.Drawing.Graphics有很多方法,利用这些方法可以绘制各种线条、空心图形和实心图形。表8.2所示的列表并不完整,但给出了主要的方法。本书只讲解对直线、空实心矩形及椭圆进行绘制,其它图形的绘制感兴趣的同学可以查阅MSDN。绘制图形的基本方法方法常见参数绘制的图形DrawLine钢笔、起点和终点一段直线DrawRectangle钢笔、位置和大小空心矩形DrawEllipse空心椭圆FillRectangle画笔、位置和大小实心矩形FillEllipse实心椭圆DrawLines钢笔、点数组一组线,把数组中的每个点按顺序连接起来DrawBezier钢笔、4
10、个点通过两个端点的一条光滑曲线,剩余的两个点用于控制曲线的形状DrawCurve通过点的一条光滑曲线DrawArc钢笔、矩形、两个角由角度定义的矩形中圆的一部分DrawClosedCurve与DrawCurve一样,但还要绘制一条用以闭合曲线的直线DrawPie矩形中的空心楔形FillPie画笔、矩形、两个角矩形中的实心楔形DrawPolygon与DrawLines一样,但还要连接第一点和最后一点,以闭合绘制的图形8.3.1画直线(1)绘制一条连接两个Point结构的线,public void DrawLine (Penpen,start,endpen,它确定线条的颜色、宽度和样式。start
11、,Point结构,它表示要连接的第一个点。end,Point结构,它表示要连接的第二个点。下面代码绘制如图8.1所示的直线,其颜色分别为黑、红、黄及指定的RGB值,宽度分别为3,5,7,9。 Graphics g = this.CreateGraphics();/创建不同颜色及精细的画笔 Pen blackPen = new Pen(Color.Black, 3); Pen redPen = new Pen(Color.Red, 5); Pen yellowPen = new Pen(Color.Yellow, 7); Pen mypen = new Pen(Color.FromArgb(16
12、7, 234, 89), 9);/绘制黑线 Point start1 = new Point(100, 100); Point end1 = new Point(200, 200); g.DrawLine(blackPen, start1, end1); /绘制红线 Point start2 = new Point(200, 100); Point end2 = new Point(300, 200); g.DrawLine(redPen, start2, end2);/绘制黄线 Point start3 = new Point(300, 100); Point end3 = new Poin
13、t(400, 200); g.DrawLine(yellowPen, start3, end3);/绘制RGB为(167, 234, 89)的直线 Point start4 = new Point(400, 100); Point end4 = new Point(500, 200); g.DrawLine(mypen, start4, end4);图直线(2)虚线的DashStyle属性,可以绘制虚线。格式为 myPen.DashStlyle=DashStyle.类型下面的示例绘制如图8.2所示的虚线,其虚线类型分别为:Dash, Dot, DashDot, DashDotDot。 blac
14、kPen.DashStyle = DashStyle.Dash; redPen.DashStyle = DashStyle.Dot; yellowPen.DashStyle = DashStyle.DashDot; mypen.DashStyle = DashStyle.DashDotDot; / Create points that define line. Point start4 = new Point(400, 100);虚线(3)直线端点以使用对象的属性为直线设置更多特性。StartCap属性和EndCap属性指定直线端点的外观;端点可以是平的、方形的、圆形的、三角形的或自定义的形状
15、。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;Point e
16、nd2 = new Point(300, 200);图8.3带端点的直线8.3.2画空心矩形绘制由Rectangle结构指定的矩形public void DrawRectangle (rectpen,Pen,它确定矩形的颜色、宽度和样式。rect,表示要绘制的矩形的结构。下面代码分别绘制如图8.4所示的矩形,Graphics g = this.CreateGraphics(); /blackPen.DashStyle = DashStyle.Dash;建立矩形. Rectangle rect = new Rectangle(100, 100, 200, 200);绘制黑色矩形g.DrawRec
17、tangle(blackPen, rect);/设置矩形虚线的类型 redPen.DashStyle = DashStyle.Dash; Rectangle rectred = new Rectangle(320,100, 200,200);绘制红色矩形 g.DrawRectangle(redPen, rectred);图8.4矩形8.3.3画实心矩阵填充结构指定的矩形的部格式:public void FillRectangle (Brushbrush,brush,确定填充特性的Brush。,Rectangle结构,它表示要填充的矩形。下面代码绘制如图8.5所示的实心矩形/建立黑色画笔Soli
18、dBrush blackBrush = new SolidBrush(Color.Black);构建矩形对象.画黑实心矩形. g.FillRectangle(blackBrush, rect);/建立灰色画笔SolidBrush grayBrush = new SolidBrush(Color.Gray); Rectangle rectgray= new Rectangle(320, 100, 200, 200); g.FillRectangle(grayBrush,rectgray);8.5实形矩形8.3.4画空心椭圆public void DrawEllipse (下面代码绘制如图8.6所
19、示的空心椭圆 /构建矩形对象. Rectangle rect = new Rectangle(100, 100, 200, 100);画空心空心椭圆. g.DrawEllipse(blackPen, rect); Rectangle rectgray = new Rectangle(320, 100, 200, 100);/建立灰色画笔 Pen grayPen = new Pen(Color.Gray, 5);/指定虚线类型 grayPen.DashStyle = DashStyle.DashDotDot; /绘制虚线椭圆 g.DrawEllipse(grayPen, rectgray);8.68.3.5绘制弧线弧线是椭圆的一部分。若要绘制弧线,可调用Graphics类的DrawArc方法。除了需要有起始角度和仰角以外,DrawEllipse方法的参数与方法的参数相同。public void DrawArc (RectangleFrect,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1