7.2 GDI+基础 GDI+ 使用三个坐标空间:世界坐标系、页面坐标系和设备坐标系。 世界坐标系是用于建立特殊图形世界模型的坐标系,也是在 .NET Framework 中传递给方法的坐标系。 页面坐标系是指绘图图面(如窗体或控件)使用的坐标系。 设备坐标系是在其上进行绘制的物理设备(如屏幕或纸张)所使用的坐标系。 在 GDI+ 可以在屏幕上绘制线条之前,坐标先要经过一系列变换。一种称为“世界变换”的变换可将世界坐标转换为页面坐标,而另一种称为“页面变换”的变换可将页面坐标转换为设备坐标。
下面的示例设置了 Graphics 对象的世界变换,然后使用该 Graphics 对象绘制前图中显示的线条: 世界变换是在 x 方向平移 100 个单位、在 y 方向平移 50 个单位。 myGraphics.TranslateTransform(100, 50) myGraphics.DrawLine(myPen, 0, 0, 160, 80)
可使用 Graphics 类的 PageUnit 属性指定除像素以外的其他度量单位。下面的示例从 (0, 0) 至 (2, 1) 绘制线条,其中点 (2, 1) 位于点 (0, 0) 的右边 2 英寸和下边 1 英寸处: myGraphics.PageUnit = GraphicsUnit.Inch myGraphics.DrawLine(myPen, 0, 0, 2, 1)
知识点2 创建图形对象 需要先创建 Graphics 对象,然后才可以使用 GDI+ 绘制线条和形状、呈现文本或显示与操作图像。Graphics 对象表示 GDI+ 绘图表面,是用于创建图形图像的对象。 处理图形包括两个步骤: 1.创建 Graphics 对象。 2.使用 Graphics 对象绘制线条和形状、呈现文本或显示与操作图像。
创建图形对象: 可以用多种方法创建图形对象。 1.在窗体或控件的 Paint 事件中接收对图形对象的引用,作为 PaintEventArgs 的一部分。在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。 2.调用某控件或窗体的 CreateGraphics 方法以获取对 Graphics 对象的引用,该对象表示该控件或窗体的绘图图面。如果想在已存在的窗体或控件上绘图,请使用此方法。 3.由从 Image 继承的任何对象创建 Graphics 对象。此方法在需要更改已存在的图像时十分有用。
举例: Dim g as Graphics ' 把图形对象应用到窗体 g = Me.CreateGraphics 或: 下面的示例演示如何使用 Bitmap 对象: Dim myBitmap as New Bitmap("C:\Documents and Settings\Joe\Pics\myPic.bmp") Dim g as Graphics = Graphics.FromImage(myBitmap)
Graphics 对象在创建后,可用于绘制线条和形状、呈现文本或显示与操作图像。与Graphics 对象一起使用的主要对象有: Pen 类 ---- 用于绘制线条、勾勒形状轮廓或呈现其他几何表示形式。 Brush 类 ---- 用于填充图形区域,如实心形状、图像或文本。 Font 类 ---- 提供有关在呈现文本时要使用什么形状的说明。 Color 结构 ---- 表示要显示的不同颜色。
知识点3 Graphics 类 封装一个 GDI+ 绘图图面。 1.Graphics.DrawLine 方法:绘制一条连接由坐标对指定的两个点的线条。 2.Graphics.DrawRectangle 方法: 绘制由坐标对、宽度和高度指定的矩形。 3.Graphics.DrawEllipse 方法:绘制一个由边框(该边框由一对坐标、高度和宽度指定)定义的椭圆。
4.Graphics.DrawString 方法:在指定位置并且用指定的 Brush 和 Font 对象绘制指定的文本字符串。 5. Graphics.FillRectangle 方法: 填充由一对坐标、一个宽度和一个高度指定的矩形的内部。 6. Graphics.FillEllipse 方法: 填充边框所定义的椭圆的内部,该边框由一对坐标、一个宽度和一个高度指定。 7.Graphics.DrawImage 方法:在指定位置并且按原始大小绘制指定的 Image 8. Graphics.TranslateTransform 方法: 通过平移来更改坐标系统的原点。
知识点4 Pen 类 定义用于绘制直线和曲线的对象。
知识点5 Brush 类 定义用于填充图形形状(如矩形、椭圆、饼形、多边形和封闭路径)的内部的对象。这是一个抽象基类,不能进行实例化。若要创建一个画笔对象,请使用从 Brush 派生出的类,如 SolidBrush、TextureBrush 和 LinearGradientBrush。
知识点6 Font 类 定义特定的文本格式,包括字体、字号和字形属性。
知识点7 PictureBox 控件 Windows 窗体 PictureBox 控件用于显示位图、GIF、JPEG、图元文件或图标格式的图形。 在设计时或运行时将 Image 属性设置为要显示的 Image。 也可以通过设置 ImageLocation 属性指定图像,然后使用 Load 方法同步加载图像或使用 LoadAsync 方法异步加载图像。 SizeMode 属性(设置为 PictureBoxSizeMode 枚举中的值)控制图像在显示区域中的剪裁和定位。 可以在运行时使用 ClientSize 属性来更改显示区域的大小。