没有合适的资源?快使用搜索试试~ 我知道了~
首页GDI+编程基础(关于gdiplus.dll)
GDI+编程基础(关于gdiplus.dll)
需积分: 12 24 下载量 142 浏览量
更新于2023-03-03
评论 1
收藏 2.08MB DOC 举报
介绍GDI+的结构和组成,讨论GDI+的几个主要新增特性与功能,说明GDI+给Windows图形图像程序的开发模式带来的变化。介绍C++封装的GDI+ API的具体使用方法,主要讲解二维矢量图形绘制和文字显示等基本内容。
资源详情
资源评论
资源推荐
第 14 章 GDI+编程基础
GDI+(Graphics Device Interface Plus,图形设备接口加)是 Windows XP 及以上版本操作系统的图形子系统,
也是传统.NET 框架的重要组成部分和窗体绘图的主要工具,负责在屏幕和打印机上绘制图形图像和显示信息。顾
名思义,GDI+是 Windows 早期版本所提供的图形设备接口 GDI 的后续版本,是建立在 GDI 之上的一个高层图形
子系统。
GDI+是一种 API,分别通过一套 C++类和一套部署为托管代码的类来展现,这两套类分别被称为 GDI+的“C++
封装”和“托管类接口”。
GDI+不但在功能上比 GDI 要强大很多,而且在代码编写方面也更简单,因此会成为 Windows 图形图像程序开
发的主要工具之一。由于篇幅所限,本书只简单介绍利用 MFC 进行 GDI+编程的一些基本内容,也不讲 GDI+的
API 编程。基于 GDI+托管封装的.NET 窗体绘图,将在第 18 章中再介绍。对 GDI+编程有兴趣的读者,可以参考如
下图书:
周鸣杨、赵景亮. 精通 GDI+编程. 清华大学出版社,2004 年 2 月(C++ / MFC)。
Mahesh Chand(韩江等译). GDI+图形程序设计. 电子工业出版社,2005 年 3 月(C# / .NET)。
本章将介绍 GDI+的结构和组成,讨论 GDI+的几个主要新增特性与功能,说明 GDI+给 Windows 图形图像程序
的开发模式带来的变化。介绍 C++封装的 GDI+ API 的具体使用方法,主要讲解二维矢量图形绘制和文字显示等基
本内容。
GDI+的路径、区域、变换、图像处理和图元文件等高级编程内容,安排在下一章介绍。
14.1 GDI+的结构与组成
本节先介绍 GDI+的体系结构,再列出 C++封装的 GDI+ API 的具体组成。
14.1.1 GDI+的结构
GDI+是建立在 GDI 之上的一种高层图形子系统,基础是 GDI+平面 API,有 C++和托管两种封装。
注意,虽然 GDI+是 GDI 的发展,但是 GDI+并非设计来替代 GDI 的,它不能独立工作,底层还得靠 GDI 实现。
1.GDI+的体系结构
GDI+与 GDI 一样,都具有设备无关性。而且 GDI+是建立在 GDI 之上的一种高层接口,供 Windows API
和.NET 框架调用。与 GDI 类似,GDI+主要提供了二维矢量图形、图像处理和文字显示版式三类功能(参见图 14-
1
1),只是 GDI+比 GDI 的功能更强大,且编程模式发生了改变。
图 14-1 GDI+的体系结构
2.GDI+平面 API 与封装
GDI+提供(expose)了一个平面(flat)API,它包含大约 600 个函数,被实现在 Gdiplus.dll 中,声明在
Gdiplusflat.h 内。这些函数被包装到了前面讨论过的 GDI+ API 的 54 个 C++类的集合之中。
作为 C++封装的替代方案,微软.NET 框架提供了 GDI+的一个托管代码封装类集,包含大约 60 个类、50 个枚
举 和 8 个 结 构 。 它 们 分 属 于 下 列 命 名 空 间 :
System.Drawing 、 System.Drawing.Drawing2D 、 System.Drawing.Imaging 、 System.Drawing.Text 和 System.
Drawing.Printing。
GDI+的平面 API 与其 C++及托管封装的关系如图 14-2 所示。
图 14-2 GDI+的封装与使用
14.1.2 GDI+的组成
GDI+的 C++封装,包含了 54 个类、12 个全局函数、(6 类)226 个图像常量、55 种枚举和 19 种结构。GDI+
的.NET 托管封装,则包含了大约 60 个类、50 个枚举和 8 个结构。这两种封装都是基于 GDI+平面 API 的。本小节
设备驱动程序
计算机硬件
GDI+ 引擎
GDI
二维矢量图形 图像 文字
.NET 框架
Win32/64 (C++)
DllExports
System.Drawing[.dll]GdiplusGdiplus.hafxwin.h
C++ 封装
(MFC)
C++ 封装 托管代码封装
设备驱动程序
计算机硬件(显示器、打印机等图形设备)
GDI API
GDI+ 平面 API
C++
C# 、VB 、F#
GDI+ API
GDI+ 托管类接口GDI 类与结构
Gdi32.dll
WinGDI.h
Gdiplus.dllGdiplusFlat.h
2
只介绍 GDI+的 C++封装,GDI+的托管封装将在第 18 章的.NET 窗体绘图中有所涉及。
1.类
GDI+的 C++封装中共有 54 个类,核心类是 Graphics,它是实际绘制直线、曲线、图形、图像和文本的类。许
多其它 GDI+类是与 Graphics 类一起使用的。例如,DrawLine 方法接收 Pen 对象,该对象中存有所要绘制的线条的
属性(颜色、宽度、虚线线型等)。FillRectangle 方法可以接收指向 LinearGradientBrush 对象的指针,该对象与
Graphics 对象配合工作来用一种渐变色填充矩形。Font 和 StringFormat 对象影响 Graphics 对象绘制文本的方式。
Matrix 对象存储并操作 Graphics 对象的仿射变换——旋转、缩放和翻转图像。
GDI+还提供了用于组织图形数据的几种结构类(例如 Rect、Point 和 Size)。而且,某些类的主要作用是结构
化数据类型。例如,BitmapData 类是 Bitmap 类的帮助器,PathData 类是 GraphicsPath 类的帮助器。图 14-3 是 GDI+
API 类的层次结构图。
注意:在 GDI+、.NET、C#、Java 和 VB 中,都把类的成员函数称为方法。当我们在 C++中,使用 GDI+
和.NET 框架类库中的类和功能时,也常常将其函数改称为方法。
3
图 14-3 GDI+类的层次结构
2.全局函数
GDI+命名空间中的全局函数有 12 个,常用的有如下两个(其余的大多数与图像相关):
关闭 GDI+:GdiplusShutdown(清除 GDI+所使用的资源)。
启动 GDI+:GdiplusStartup(初始化 GDI+)。
3.常量、枚举和结构
GDI+中有 6 类共计 226 个图像常量(都被定义在头文件 GdiplusImaging.h 中),包括图像文件格式常量 11 个
GdiplusBase
Graphics
GraphicsPath
GraphicsPathIterator
Pen
Brush
SolidBrush
HatchBrush
TextureBrush
LinearGradientBrush
PathGradientBrush
Image
Bitmap
Metafile
CustomLineCap
AdjustableArrowCap
CachedBitmap
ImageAttributes
FontCollection
InstalledFontCollection
PrivateFontCollection
StringFormat
Region
Font
FontFamily
Matrix
Point PointF
Size SizeF
Rect RectF
Color
Effect
Blur
BrightnessContrast
ColorBalance
ColorCurve
ColorLUT
ColorMatrixEffect
HueSaturationLightness
Levels
RedEyeCorrection
Sharpen
Tint
ImageItemData
BitmapData
MetafileHeader
PropertyItem
EncoderParameter
EncoderParameters
ImageCodecInfo
PathData
CharacterRange
独立类
绘图类
效果类
4
(如 ImageFormatBMP、ImageFormatGIF、ImageFormatJPEG、ImageFormatPNG、ImageFormatTIFF 等)、图像帧
维常量 2 个、图像编码器常量 13 个、图像像素格式常量 14 个、图像特性标志类型 9 个、图像特性标志 217 个。
GDI+ 定 义 了 55 种 枚 举 类 型 , 它 们 都 是 相 关 常 数 的 集 合 。 例 如 :
PenType、BrushType、DashStyle、ImageType、LineCap、FillMode、ImageFlags 等。
GDI+ API 中 还 定 义 了 19 种 结 构 , 用 于 GDI+ 的 各 种 方 法 调 用 中 。 例 如 :
ColorMap、ColorMatrix、ColorPalette、GdiplusAbort、GdiplusStartupInput、GdiplusStartupOutput 等。
14.2 GDI+的特色
本节介绍 GDI+的几个主要新增特性与功能,说明 GDI+在编程模式上的改变。
14.2.1 GDI+新增特性
与 GDI 相比,GDI+新增的特性主要有渐变画刷、样条和贝塞尔曲线、持久路径、矩阵变换、伸缩区域、 α 混
色和对多种图像格式的支持。
1.渐变画刷
GDI+中新增加的渐变画刷(gradient brush,梯度刷),通过提供用于填充图形、路径和区域的颜色线性渐变
和路径渐变的画刷,扩展了 GDI 的功能。渐变画刷可用于绘制直线、曲线和路径,参见图 14-4。
a)(水平)线性渐变 b)(贝塞尔)路径渐变
图 14-4 渐变画刷 图 14-5 基样条曲线与折线
2.曲线方法
GDI+支持基样条(cardinal splines)和贝塞尔(Bezier)方法,可以由若干控制点生成光滑的曲线,参见图 14-
5。
3.持久路径对象
GDI 中的路径(path)属于设备上下文,并且会在绘制时被毁坏。而 GDI+则可以创建并维护多个与 Graphics
对象分开的持久(persistent)路径对象——GraphicsPath 对象,在绘图操作时也不会破坏,因此可多次使用同一个
5
剩余63页未读,继续阅读
ph11204
- 粉丝: 0
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2022年中国足球球迷营销价值报告.pdf
- 房地产培训 -营销总每天在干嘛.pptx
- 黄色简约实用介绍_汇报PPT模板.pptx
- 嵌入式系统原理及应用:第三章 ARM编程简介_3.pdf
- 多媒体应用系统.pptx
- 黄灰配色简约设计精美大气商务汇报PPT模板.pptx
- 用matlab绘制差分方程Z变换-反变换-zplane-residuez-tf2zp-zp2tf-tf2sos-sos2tf-幅相频谱等等.docx
- 网络营销策略-网络营销团队的建立.docx
- 电子商务示范企业申请报告.doc
- 淡雅灰低面风背景完整框架创业商业计划书PPT模板.pptx
- 计算模型与算法技术:10-Iterative Improvement.ppt
- 计算模型与算法技术:9-Greedy Technique.ppt
- 计算模型与算法技术:6-Transform-and-Conquer.ppt
- 云服务安全风险分析研究.pdf
- 软件工程笔记(完整版).doc
- 电子商务网项目实例规划书.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0