本章内容
图形操作基础:GDI和GDI+
绘图工具:Graphics类
处理字体和图像:Font类和Image类
1.GDI是什么
Graphic Device Interface 图形设备接口
接口:GDI提供了一个统一的、标准化的编程接口。
用途:在窗体上绘制矢量图形和文字,处理像素图。
GDI是传统的、过去的、第一代的图形设备接口。
2.GDI+是什么
GDI+现代的增强版图形设备接口。主要由二维矢量图形、图像处理和版式三部分组成。
3. Graphics类是什么
定义:Graphics用于绘图。Graphics类代表一个块画布,画布提供了各种绘图工具。
GDI+ 的核心类,封装了绘制直线、曲线、图形、图像和文本的方法。
不能直接实例化,必须通过特定方法获取其对象。
代表一个画布,与特定的设备上下文关联。
4.如何使用Graphics
答:一句话:通过获取它的实例,调用其方法,在“画布”(如窗体、位图)上绘制图形。
绘图的基本步骤
创建 Graphics 对象。
创建绘图工具(画笔、画刷等)。
使用 Graphics 类的方法进行绘制。
清空 Graphics 对象。
释放资源。
5.获取Graphics对象的三种方法
方法1:通过窗体的事件获取(最常用、最推荐)
在Paint事件中获取这是最标准的方式,用于绘制持久的、需要重绘的图形。
//创建了一个画布(画布自带各种绘画工具:钢笔、笔刷、颜色、填充颜色的工具)
private void Form1_Paint(object sender, PaintEventArgs e)
{
// 从事件参数中获取Graphics对象
Graphics g = e.Graphics;
}方法2:通过窗体的方法获取
为控件创建Graphics对象(临时绘制),用于响应事件(如按钮点击)时的临时绘制,但绘制内容在窗体重绘后会消失。
private void Button1_Click(object sender, EventArgs e)
{
// 为窗体创建Graphics对象
Graphics g = this.CreateGraphics()
}方式3:通过Graphics类的方法获取
用途:在位图上绘图
private void DrawOnBitmap()
{
// 创建一个与窗体同样大小的位图
Bitmap bmp = new Bitmap(this.Width, this.Height);
// 获取位图的Graphics对象
Graphics g = Graphics.FromImage(bmp)
}6.相关的命名空间
System.Drawing:提供 GDI+ 基本图形功能(Graphics, Pen, Brush, Font 等)。System.Drawing.Drawing2D:提供高级二维和矢量图形功能(渐变画刷、矩阵等)。System.Drawing.Imaging:提供高级图像处理功能。System.Drawing.Text:提供高级字体和文本排版功能。
7.Graphics 类的常用方法有哪些
绘制图形:
DrawLine,DrawRectangle,DrawEllipse,DrawArc,DrawPie,DrawPolygon。填充图形:
FillRectangle,FillEllipse,FillPie,FillPolygon。绘制文本:
DrawString。绘制图像:
DrawImage。其他:
Clear(清除画布),Dispose(释放资源)。
8.画笔 (Pen 类)的用途是什么
用于绘制线条和图形轮廓。
可以设置颜色和宽度。
可以使用
Color.FromArgb方法创建自定义颜色。
9. 画刷 (Brush 类)的用途是什么
用于填充图形的内部。
是一个抽象基类,需使用其派生类:
SolidBrush:单色画刷。HatchBrush:图案画刷(位于System.Drawing.Drawing2D命名空间)。LinearGradientBrush:线性渐变画刷(位于System.Drawing.Drawing2D命名空间)。
10.如何绘制直线
方法:
DrawLine。参数:可以使用两个
Point结构,或直接使用四个坐标值 (x1, y1, x2, y2)。
11. 如何绘制矩形
方法:
DrawRectangle。参数:指定左上角坐标、宽度和高度。
12. 如何绘制椭圆
方法:
DrawEllipse。参数:指定外接矩形的左上角坐标、宽度和高度。宽高相等时即为圆。
13. 如何绘制圆弧
方法:
DrawArc。参数:指定一个边界矩形、起始角度和扫过的角度。
14. 如何绘制扇形
方法:
DrawPie。参数:与
DrawArc类似,指定边界矩形、起始角度和扫过的角度。
15. 如何绘制多边形
方法:
DrawPolygon。参数:一个
Point结构数组,表示多边形的各个顶点。
16. Font类的用途是什么
用于定义文本的格式,包括字体、字号和样式。
样式 (
FontStyle):Regular(普通)、Bold(加粗)、Italic(斜体)、Underline(下划线)等。
17.如何绘制文本
方法:
DrawString。参数:需要绘制的字符串、Font 对象、Brush 对象、起始坐标。
18. 如何绘制图像
方法:
DrawImage。参数:Image 对象、坐标,或坐标加指定大小。