如何:创建用于绘制的 Graphics 对象
在使用 GDI+ 绘制线和形状、呈现文本或显示和操作图像之前,需要创建一个 Graphics 对象。 Graphics 对象表示 GDI+ 绘图图面,是用于创建图形图像的对象。
使用 Graphics 有两个步骤:
创建 Graphics 对象
可通过多种方式创建 Graphics 对象。
创建 Graphics 对象
接收对 Graphics 对象的引用,作为窗体或控件的 Paint 事件中 PaintEventArgs 的一部分。 这通常是你在为控件创建绘制代码时获取对 Graphics 对象的引用的方式。 同样,你也可以在处理 PrintDocument 的 PrintPage 事件时获取 Graphics 对象作为 PrintPageEventArgs 的属性。
- 或者 -
调用控件或窗体的 CreateGraphics 方法,获取对表示该控件或窗体的绘图表面的 Graphics 对象的引用。 如果要在已存在的窗体或控件上绘图,请使用此方法。
- 或者 -
从继承自 Image 的任何对象创建一个 Graphics 对象。 若要更改已存在的图像,此方法非常有用。
以下各部分详细介绍了其中每个过程。
Paint 事件处理程序中的 PaintEventArgs
在为控件编写 PaintEventHandler 或为 PrintDocument 编写 PrintPage 时,提供了一个 Graphics 对象作为 PaintEventArgs 或 PrintPageEventArgs 的属性之一。
从 Paint 事件中的 PaintEventArgs 获取对 Graphics 对象的引用
声明 Graphics 对象。
分配变量以引用作为 PaintEventArgs 的一部分传递的 Graphics 对象。
插入代码以绘制窗体或控件。
以下示例显示如何在 Paint 事件中从 PaintEventArgs 引用 Graphics 对象:
Private Sub Form1_Paint(sender As Object, pe As PaintEventArgs) Handles _ MyBase.Paint ' Declares the Graphics object and sets it to the Graphics object ' supplied in the PaintEventArgs. Dim g As Graphics = pe.Graphics ' Insert code to paint the form here. End Sub
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs pe) { // Declares the Graphics object and sets it to the Graphics object // supplied in the PaintEventArgs. Graphics g = pe.Graphics; // Insert code to paint the form here. }
private: void Form1_Paint(System::Object ^ sender, System::Windows::Forms::PaintEventArgs ^ pe) { // Declares the Graphics object and sets it to the Graphics object // supplied in the PaintEventArgs. Graphics ^ g = pe->Graphics; // Insert code to paint the form here. }
CreateGraphics 方法
也可使用控件或窗体的 CreateGraphics 方法,获取对表示该控件或窗体的绘图表面的 Graphics 对象的引用。
使用 CreateGraphics 方法创建 Graphics 对象
调用要在其上呈现图形的窗体或控件的 CreateGraphics 方法。
Dim g as Graphics ' Sets g to a Graphics object representing the drawing surface of the ' control or form g is a member of. g = Me.CreateGraphics
Graphics g; // Sets g to a graphics object representing the drawing surface of the // control or form g is a member of. g = this.CreateGraphics();
Graphics ^ g; // Sets g to a graphics object representing the drawing surface of the // control or form g is a member of. g = this->CreateGraphics();
从图像对象创建
此外,可从派生自 Image 类的任何对象创建 Graphics 对象。
从图像创建 Graphics 对象
调用 Graphics.FromImage 方法,提供要从中创建 Graphics 对象的 Image 变量的名称。
以下示例演示如何使用 Bitmap 对象:
Dim myBitmap as New Bitmap("C:\Documents and Settings\Joe\Pics\myPic.bmp") Dim g as Graphics = Graphics.FromImage(myBitmap)
Bitmap myBitmap = new Bitmap(@"C:\Documents and Settings\Joe\Pics\myPic.bmp"); Graphics g = Graphics.FromImage(myBitmap);
Bitmap ^ myBitmap = gcnew Bitmap("D:\\Documents and Settings\\Joe\\Pics\\myPic.bmp"); Graphics ^ g = Graphics::FromImage(myBitmap);
注意
只能从非索引 .bmp 文件(例如 16 位、24 位和 32 位 .bmp 文件)创建 Graphics 对象。 非索引 .bmp 文件的每个像素都保存一种颜色,而索引 .bmp 文件的像素保存颜色表的索引。
绘制和操作形状和图像
创建后,Graphics 对象可用于绘制线和形状、呈现文本或显示和操作图像。 与 Graphics 对象一起使用的主要对象包括:
Pen 类 - 用于绘制线、勾勒形状或呈现其他几何表示。
Brush 类 - 用于填充图形区域,例如填充的形状、图像或文本。
Font 类 - 提供对呈现文本时使用的形状的描述。
Color 结构 - 表示要显示的不同颜色。
使用已创建的 Graphics 对象
使用上面列出的适当对象来绘制所需内容。
有关详情,请参阅以下主题:
要呈现的内容 请参阅 行 如何:在 Windows 窗体上绘制直线 形状 如何:绘制显示边框的形状 文本 如何:在 Windows 窗体上绘制文本 图像 如何:使用 GDI+ 呈现图像