C# 《WinForm程序设计与实践》 第9章 GDI+

本文介绍了C#中WinForm应用的GDI+,包括GDI+概述,辅助绘图对象如Point、Size、Rectangle、Color,以及基本绘图工具Pen和Brush的使用。通过实例展示了如何生成和验证验证码图像。
摘要由CSDN通过智能技术生成

9 GDI+

 

9.1 GDI+概述

GDI(Graphic Device Interface,图像设备接口)是早期Windows操作系统的一个可执行,位于C:\\Windows\System32文件夹中,文件名为GDI.exe。GDI+ 是GDI的升级版本,提供了各种丰富的图形图像处理功能,统一在.Net Framework中封装和定义。

 

在.Net Framework中,GDI+ 被封装在如下几个命名空间中。

(1)System.Drawing: 提供了对GDI+基本图形功能的访问,其中Graphics类是整个GDI+的核心,能够绘制线条、曲线、图形、图像文本的画面。其他类需要和Graphics类配合使用。在System.Drawing中,常见的类与结构如下表所示:

表9-1 GDI+常用的类与结构说明

类或结构

说明

Graphics

封装一个GDI+绘图图面

Bitmap

封装GDI+位图,用于处理由像素数据定义的图像的功能

Brush

用于创建画笔对象,以填充图形的内部

Font

定义特定的文本格式,包括字体、字号和字形属性

Pen

定义用于绘制直线曲线的钢笔对象

Region

指示由矩形和由路径构成的图形形状的内部

SolidBrush

定义单色画笔

StringFormat

封装文本布局信息、显示操作和OpenType功能

Color

表示一种ARGB颜色(alpha、红色、绿色、蓝色)

Point

表示在二维平面中定义点的整数x和y坐标的有序对

PointF

表示在二维平面中定义点的浮点x和y坐标的有序对

Rectangle

存储一组整数,共4个,表示一个矩形的位置和大小

Size

存储一个有序整数对,通常为矩形的宽度和高度

SizeF

存储有序浮点数对,通常为矩阵的宽度和高度

ARGB与RGB、RGBA的区别

https://blog.csdn.net/caption_deng/article/details/52366907 

(2) System.Drawing.Drawing2D: 提供了高级的二维和矢量图形功能,主要有梯度型画刷、Matirx类和GraphicsPath类等。

(3) System.Drawing.Image: 提供了高级GDI+图形处理功能。

(4) System.Drawing.Text: 提供了高级GDI+字体和文本排版功能。

 

 

Windows操作系统的GDI+服务分为以下3个主要部分

(1) 二维矢量图形

矢量图形由图元(如线条、曲线和图形)组成,它们由一系列坐标系统的点集组成。GDI+提供了用于存储这些图元本身信息的类或结构体,也提供了绘制图元的类。例如,Rectangle结构体存储了一个矩形的尺寸位置;Pen类存储线条颜色、线条宽度,以及线条样式等信息;Graphics类提供绘制线条、矩形、路径和其它图形的方法;而Brush类存储了在闭合图形内部填充颜色和图案的信息。

(2) 图形处理

有些图片很难用矢量图形表示,这种类型的图像采用位图进行存储,即由表示屏幕上独立点颜色的数字型数组所组成。GDI+中提供了若干种类,可实现快速存取和显示。例如,CachedBitmap类可用于存储一张缓存在内存中的图片。

(3) 图文混排

图文混排是文字处理或绘图软件的基础功能,关系到文字以何种字体、尺寸和样式在绘图区域中的具体显示和控制,GDI+为这种复杂的任务提供广泛的支持。

 

9.2 绘图对

【图书描述】: GDI+是新一代的图形接口。如果要设计.NET Framework图形应用程序,就必须使用GDI+。本书是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面。 本书适合于开发GDI+图形应用程序的初、中级程序员阅读,书中给出了大量用C#语言编写的可重用示例代码,可以使读者更快地掌握书中所介绍的各种知识和概念。本书也可以作为大专院校相关课程的重要辅导教材。 【编辑推荐】: 《GDI+图形程序设计》是为.NET开发人员介绍如何编写Windows和Web图形应用程序的指南用书。通过大量详尽的实例,本书使有经验的程序员可以更深入地理解在.NET Framework类库中定义和整个GDI+API。   本书从介绍GDI+Windows图形程序设计的基本知识开始,其核心是对一些实际问题的指导,包括如何使用Windows Forms及如何优化GDI+的性能。本书通过一些例子来说明如何开发真实世界的工具,如GDI+Painter、GDI+Editro、ImageViewer和ImageAnimator等。另外,作者还给出了大量使用C#语言编写的可重用示例代码,读者可从网上下载完整的C#和Visual Basic.NET源代码,并可通过这些源代码查看书中各图的彩色效果 第1 GDI+ ——下一代图形接口 1.1 理解GDI+ 1.2 探索GDI+ 的功能 1.3 从GDI的角度学习GDI+ 1.4 .NET中的GDI+ 名称空间和类 总结 第2 第一个GDI+ 应用程序 2.1 绘制表面 2.2 坐标系统 2.3 指南——第一个GDI+ 应用程序 2.4 一些基本的GDI+ 对象 总结 第3 Graphics类 3.1 Graphics类的属性 3.2 Graphics类的方法 3.3 GDI+ Painter应用程序 3.4 绘制饼图 总结 第4 使用画笔和钢笔 4.1 理解和使用画笔 4.2 在GDI+ 中使用钢笔 4.3 使用钢笔进行变形 4.4 使用画笔进行变形 4.5 系统钢笔和系统画笔 4.6 一个真实世界的例子 ——在GDI+ Painter应用程序中添加颜色、钢笔和画笔 总结 第5 颜色、字体和文本 5.1 访问Graphics对象 5.2 使用颜色 5.3 使用字体 5.4 使用文本和字符串 5.5 渲染文本的质量和性能 5.6 高级版式 5.7 一个简单的文本编辑器 5.8 文本变形 总结 第6 矩形和区域 6.1 Rectangle结构体 6.2 Region类 6.3 区域和剪辑 6.4 剪辑区域示例 6.5 区域、非矩形窗体和控件 总结 第7 图像处理 7.1 光栅图像和矢量图像 7.2 使用图像 7.3 操作图像 7.4 在GDI+ 中播放动画 7.5 使用位图 7.6 使用图标 7.7 扭曲图像 7.8 绘制透明的图形对象 7.9 查看多个图像 7.10 使用图片框查看图像 7.11 使用不同的大小保存图像 总结 第8 高级图像处理 8.1 渲染位图的一部分 8.2 使用图元文件 8.3 使用颜色对象应用颜色映射 8.4 图像属性和ImageAttributes类 8.5 编码器参数与图像格式 总结 第9 高级二维图形 9.1 线帽和线条样式 9.2 理解并使用图形路径 9.3 图形容器 9.4 读取图像的元数据 9.5 混合 9.6 Alpha混合 9.7 其他高级二维主题 总结 第10 变形 10.1 坐标系统 10.2 变形的类型 10.3 Matrix类与变形 10.4 Graphics类与变形 10.5 全局变形、局部变形和复合变形 10.6 图像变形 10.7 颜色变形和颜色矩阵 10.8 图像处理中的矩阵操作 10.9 文本变形 10.10 变形顺序的重要性 总结 第11 打印 11.1 简要地回顾使用Microsoft Windows进行打印的历史 11.2 打印过程概述 11.3 第一个打印应用程序 11.4 打印机的设置 11.5 PrintDocument和Print事件 11.6 打印文本 11.7 打印图形 11.8 打印对话框 11.9 自定义页面设置 11.10 打印多个页面 11.11 页边打印——注意事项 11.12 进入细节——自定义控制和打印控制器 总结 第12 开发GDI+ Web应用程序 12.1 创建第一个ASP.NET Web应用程序 12.2 第一个图形Web应用程序 12.3 绘制简单的图形 12.4 在Web上绘制图像 12.5 绘制曲线图 12.6 绘制饼图 总结 第13 GDI+ 的最佳实践及性能技术 13.1 理解渲染过程 13.2 双缓存和无抖动绘图 13.3 理解SetStyle方法 13.4 绘图过程的质量与性能 总结 第14 GDI互操作性 14.1 在受控环境中使用GDI 14.2 在受控代码中使用GDI的注意事项 总结 第15 其他GDI+ 示例 15.1 设计交互式GUI应用程序 15.2 绘制具有形状的窗体和Windows控件 15.3 为绘制的图像添加版权信息 15.4 从流或数据库读取及写入图像 15.5 创建自绘制的列表控件 总结 附录A .NET中的异常处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值