GDI+绘图基本知识

Windows操作系统的图形输出是与设备无关的,使用GDI来处理二维图形图像,进行图形输出。Windows早期版本中使用GDI图像设备接口 (Graphics Device Interface), 是属于绘图方面的 API (Application Programming Interface)。因为应用程序不能直接控制硬件, 所以当我们要进行绘图的动作时, 必须通过 GDI 才能完成,由GDI完成实际的图形输出操作。
GDI+ 又是什么呢?GDI+ .NET Framework的绘图技术, 可将应用程序和绘图硬件分离, 让我们能够编写与设备无关的应用程序。它可以让我们不需注意特定显示设备的详细数据, 便可在屏幕或打印机上显示信息。我们可以调用 GDI+ 类别所提供的方法, 然后这些方法会适当地调用特定的设备驱动程序, 而完成绘图。
 本章学习目标:
n了解System. Drawing 命名空间
n掌握矢量图形和绘制对象
n可以绘制简单的几何图形
n掌握图像的基本处理技术

5-1-1 坐标系统

窗体、控件或者打印机都包含坐标,这里是二维图形绘制,即具有XY坐标,默认情况,X坐标代表从绘图区左边边缘(Left)到某一点的距离,Y坐标代表从绘图区上边边缘(Top)到某一点的距离。
1. 坐标原点:在窗体或控件的左上角,坐标为(00);
2. 正方向:X轴正方向为水平向右,Y轴正方向为垂直向下;
3. 单位:在设置时,一般以像素为单位,像素(Pixel 是由 Picture(图像) Element(元素)这两个单词的字母所组成的,是用来计算数码影像的一种单位,把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位像素(Pixel)。图形的质量由像素决定,像素越大,分辨率也越大。

5-1-2 System.Drawing命名空间

System.Drawing 命名空间提供了对 GDI+ 基本图形功能的访问,其中一些子命名空间中提供了更高级的功能。该命名空间中常用类,如表5-15-2所示。
说明
Bitmap
封装 GDI+ 位图,此位图由图形图像及其属性的像素数据组成。Bitmap 是用于处理由像素数据定义的图像的对象。
Brush
定义用于填充图形形状(如矩形、椭圆、饼形、多边形和封闭路径)的内部的对象。
Font
定义特定的文本格式,包括字体、字号和字形属性。无法继承此类。
Graphics
封装一个 GDI+ 绘图图面。无法继承此类。
Pen
定义用于绘制直线和曲线的对象。无法继承此类。
Region
指示由矩形和由路径构成的图形形状的内部。无法继承此类。
5-1
常用结构,如表5-2所示。
结构
说明
Color
表示 RGB 颜色。
Point
表示在二维平面中定义的点、整数 X Y 坐标的有序对。
Rectangle
存储一组整数,共四个,表示一个矩形的位置和大小。对于更高级的区域函数,请使用 Region 对象。
Size
存储一个有序整数对,通常为矩形的宽度和高度。
5-2

5-1-3  Graphics

Graphics 类封装了一个GDI+绘图界面,提供将对象绘制到显示设备的方法,使用GDI+创建图形图像时,需要先创建Graphics对象,即在哪里画图,该类无法继承。有三种类型的绘图界面:
1.窗体和控件
2.打印机
3.内存中的位图
Graphics类不能直接实例化,创建图形对象的方法有三种:
1.控件类的OnPaint()方法参数PaintEventArgs获取Graphics对象
2.窗体类或控件类中的CreateGraphics()方法获得Graphics对象。
3.从位图对象(Bitmap)产生一个Graphics对象,Graphics.FromImage(bitmap);
        常用方法及属性,如表5-3所示。
名称
说明
Dispose
释放由 Graphics 使用的所有资源。
DrawEllipse
绘制一个由边框(该边框由一对坐标、高度和宽度指定)定义的椭圆。
DrawArc
绘制弧形
DrawLine
绘制一条连接由坐标对指定的两个点的线条。
绘制由一组 Point 结构定义的多边形。
绘制由坐标对、宽度和高度指定的矩形。
绘制一个扇形,该形状由一个坐标对、宽度、高度以及两条射线所指定的椭圆定义。
DrawCurse
绘制曲线,由参数Point数组指定
填充边框所定义的椭圆的内部,该边框由一对坐标、一个宽度和一个高度指定。
FillRegion
填充 Region 的内部。
ScaleTransform
将指定的缩放操作应用于此 Graphics
TanslateTransform
平移更改坐标系统的原点
5-3 Graphics常用方法
阅读更多
上一篇GDI+环境配置与使用方法
下一篇使用VC获取字符串的长度
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭