CGDI图形绘制.docxVIP

  • 7
  • 0
  • 约3.22万字
  • 约 33页
  • 2018-06-02 发布于辽宁
  • 举报
第8章?绘制图像本章要求掌握用GDI+绘制直线、圆、长方形等图形,在第七章的基础上编写一个类似于“画图”图像图形处理程序8.1?绘图所用到的常用控件及类绘图用到的PictureBox,Image, Bitmap, OpenFileDialog,SaveFileDialog等控件或类在前一章已经进行了讲解。现对所用的其它控件或类进行说明。8.1.1?颜色在绘制图形时需要指定使用的颜色,在GDI+中,颜色用System.Drawing.Color?结构来表示的。1?红绿蓝(RGB)值监视器可以显示的颜色总数非常大——?超过160万。其确切的数字是2的24次方,即16?777?216。显然,我们需要对这些颜色进行索引,才能指定在给定的某个像素上要显示什么颜色。给颜色进行索引的最常见方式是把它们分为红绿蓝成分,每种成份的光分为256种不同的强度,其值在0~255之间。2?设置颜色的方法??????????可以调用静态函数Color.FromArgb()指定该颜色的红绿蓝值。?其格式为public static?Color?FromArgb (?????? int red,?????? int green,?????? int blue)例如:Color red = Color.FromArgb(255, 0, 0);Color green = Color.FromArgb(0, 255, 0);Color blue = 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。它是单色画笔,用于填充图形形状,如矩形、椭圆、扇形、多边形和封闭路径。?Color customColor = Color.FromArgb(192,192,192);??? SolidBrush shadowBrush = new SolidBrush(customColor);或者??? SolidBrush shadowBrush = new SolidBrush(Color.Gray);2与画笔不同,钢笔只用一个类System.Drawing.Pen来表示。但钢笔比画笔复杂一些,因为它需要指定线条应有多宽(像素),对于一条比较宽的线段,还要确定如何填充该线条中的区域。Pen solidBluePen = new Pen(Color.FromArgb(0,0,255));Pen solidWideBluePen = new Pen(Color.Blue, 4);8.2?绘图所用到的结构GDI+使用几个类似的结构来表示坐标或区域。下面介绍几个结构,它们都是在System.Drawing命名空间中定义的,如表8.1所示。表?8-1 Point、Size及Rectangle结构?结????构主要的公共属性PointX,YPointF?SizeWidth, Height?SizeFRectangleLeft, Right , Top, Bottom, Width, Height, X, Y, Location, SizeRectangleF  ?8.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完全相

文档评论(0)

1亿VIP精品文档

相关文档