矢量图形概述

Windows GDI+ 在坐标系上绘制线条、矩形和其他图形。 可以从各种坐标系中进行选择,但默认坐标系的原点位于左上角,x 轴指向右侧,y 轴指向下。 默认坐标系统中的度量单位是像素。

坐标系统的插图,其中 x 轴向右延伸,y 轴向下延伸

计算机监视器在称为图片元素或像素的点的矩形数组上创建它的显示。 屏幕上显示的像素数因监视器而异,用户通常可在一定程度上配置单个监视器上显示的像素数。

矩形网格的插图,该网格中的三个单元格按坐标标记

使用 GDI+ 绘制线条、矩形或曲线时,可以提供有关要绘制的项的某些关键信息。 例如,可以通过提供两个点来指定一条线,并且可以通过提供点、高度和宽度来指定矩形。 GDI+ 与显示驱动程序软件协同工作,确定必须打开哪些像素以显示线条、矩形或曲线。 下图显示了打开的像素以显示从点 (4, 2) 到点 (12, 8) 的一条线。

显示矩形网格的插图,其中填充了单元格以指示两个终结点之间的线条

随着时间的推移,某些基本构建基块被证明在创建二维图片方面是最有用的。 以下列表中提供了这些构建基块,它们均受 GDI+ 的支持:

  • 线条
  • 矩形
  • 椭圆
  • 弧线
  • Polygon(多边形)
  • 基数自由绘制曲线
  • 贝塞尔自由绘制曲线

GDI+ 中的 Graphics 类提供以下方法用于绘制上一列表中的项: DrawLineDrawRectangleDrawEllipseDrawPolygonDrawArcDrawCurve ((用于基数样条) )和 DrawBezier。 其中每种方法都重载;也就是说,每个方法都有不同的参数列表的多个变体。 例如,DrawLine 方法的一个变体接收 Pen 对象的地址和四个整数,而 DrawLine 方法的另一个变体接收 Pen 对象的地址和两个 Point 对象引用。

绘制线条、矩形和贝塞尔样条的方法具有复数伴随方法,这些方法在单个调用中绘制多个项: DrawLinesDrawRectanglesDrawBeziers。 此外, DrawCurve 方法有一个配套方法 DrawClosedCurve,该方法通过将曲线的终点连接到起点来关闭曲线。

Graphics 类的所有绘图方法都与 Pen 对象结合使用。 因此,若要绘制任何内容,必须至少创建两个对象: Graphics 对象和 Pen 对象。 Pen 对象存储要绘制的项的属性,如线条宽度和颜色。 Pen 对象的地址作为参数之一传递给绘图方法。 例如, DrawRectangle 方法的一个变体接收 Pen 对象的地址和四个整数,如以下代码所示,该变量绘制一个宽度为 100、高度为 50 且左上角为 (20, 10) 的矩形。

myGraphics.DrawRectangle(&myPen, 20, 10, 100, 50);