没有合适的资源?快使用搜索试试~ 我知道了~
GDI+ 绘图,写得很详细
5星 · 超过95%的资源 需积分: 31 324 下载量 73 浏览量
2012-12-14
10:35:24
上传
评论 9
收藏 4.23MB PDF 举报
温馨提示
试读
211页
vc 绘图,GDI+绘图,比GDI多了很多优点,比如抗锯齿,透明色等等!
资源推荐
资源详情
资源评论
第 6 章 GDI+
GDI+(Graphics Device Interface Plus 图形设备接口加)是 Windows XP 和 Windows Server
2003 操作系统的子系统,也是.NET 框架的重要组成部分,负责在屏幕和打印机上绘制图形
图像和显示信息。
顾名思义,GDI+是 Windows 早期版本所提供的图形设备接口 GDI 的后续版本。GDI+
是一种应用程序编程接口(API),通过一套部署为托管代码的类来展现。这套类被称为 GDI+
的“托管类接口”。
GDI+最早是于 2001 年随 Windows XP 一起推出的一种 API,后来又被包装进.NET 框架
的托管类库之中,成为.NET 中窗体绘图的主要工具。
GDI+不但在功能上比 GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成
为 Windows 图形图像程序开发的首选。
本章将介绍 GDI+的特点和新增功能,以及 GDI+ API 的具体使用方法,包括二维矢量
图形的绘制、图像处理的应用、以及文字的显示。
6.1 概述
GDI+与 GDI 一样,都具有设备无关性。应用程序的程序员可利用 GDI+这样的图形设
备接口在屏幕或打印机上显示信息,而不需要考虑特定显示设备的具体情况。应用程序的程
序员调用 GDI+类提供的方法,而这些方法又反过来相应地调用特定的设备驱动程序。GDI+
将应用程序与图形硬件隔离,而正是这种隔离允许开发人员创建设备无关的应用程序。
GDI+的体系结构
本节首先介绍 GDI+的几个主要新增的特性及其功能,然后说明它给 Windows 图形图像
程序的开发模式带来的变化,最后给出一个代码实例,介绍如何在 VC++中使用 GDI+进行
程序开发。
设备驱动程序
计算机硬件
GDI+ 引擎
GDI
二维矢量图形
图像
文字
.NET 框架
Win32/64 (C++)
1.GDI+的功能
GDI+主要提供了以下三种功能:
1)二维矢量图形
矢量图形包括坐标系统中的系列点指定的绘图基元(如直线、曲线和图形)。例如,直
线可通过它的两个端点来指定,而矩形可通过确定其左上角位置的点并给出其宽度和高度的
一对数字来指定。简单路径可由通过直线连接的点的数组来指定。贝塞尔样条是由四个控制
点指定的复杂曲线。
GDI+提供了存储基元自身相关信息的类(结构)、存储基元绘制方式相关信息的类,以
及实际进行绘制的类。例如,Rectangle 结构存储矩形的位置和尺寸;Pen 类存储有关线条颜
色、线条粗细和线型的信息;而 Graphics 类具有用于绘制直线、矩形、路径和其它图形的
方法(类似于 GDI 中的 CDC 类)。还有几种 Brush 类,它们存储有关如何使用颜色或图案
来填充封闭图形和路径的信息。
用户可以在图元文件中记录矢量图像(图形命令的序列)。GDI+提供了 Metafile 类,可
用于记录、显示和保存图元文件。MetafileHeader 和 MetaHeader 类允许您检查图元文件头中
存储的数据。
2)图像处理
某些种类的图片很难或者根本无法用矢量图形技术来显示。例如,工具栏按钮上的图片
和显示为图标的图片就难以指定为直线和曲线的集合。拥挤的棒球运动场的高分辨率数字照
片会更难以使用矢量技术来制作。这种类型的图像可存储为位图,即代表屏幕上单个点颜色
的数字数组。
GDI+提供了 Image、Bitmap 和 Metafile 类,可用于显示、操作和保存位图。它们支持
众多的图像文件格式,还可以进行多种图像处理的操作。
3)文字显示版式
就是使用各种字体、字号和样式来显示文本。GDI +为这种复杂任务提供了大量的支持。
GDI+中的新功能之一是子像素消除锯齿,它可以使文本在 LCD 屏幕上呈现时显得比较平
滑。
4)功能汇总
GDI+的 C++封装包含 54 个类、12 个函数、6 类(226 个)图像常量、55 种枚举和 19
种结构。GDI+的托管类接口则包含大约 60 个类、50 个枚举和 8 个结构。这两种封装中的
Graphics 类都是 GDI+的核心功能,它是实际绘制直线、曲线、图形、图像和文本的类。通
过这些类和接口可以实现:
使用笔绘制线条和形状
使用刷填充形状
使用图像、位图和图元文件
α混合线条和填充
字体和文本
构造并绘制曲线
用颜色渐变的梯度刷填充形状
构造并绘制轨迹
变换
图形容器
区域
重新着色
读取元数据
等非常丰富强大的功能。
2.GDI+新增特性
1)渐变画刷
渐变画刷(gradient brush 梯度刷)通过提供用于填充图形、路径和区域的线性渐变画笔
和路径渐变画笔,GDI+扩展了 GDI 的功能。渐变画笔还可用于绘制直线、曲线和路径。线
性渐变画笔可用于使用颜色来填充图形,画笔在图形中移动时,颜色会逐渐改变。例如,假
定通过指定图形左边为蓝色、右边为绿色,创建了一个水平渐变画笔。当用水平渐变画笔填
充该图形时,随着画笔从图形的左边移至右边,颜色就会由蓝色逐渐变为绿色。用类似方法
定义的垂直渐变画笔填充的图形,颜色从上到下变化。图 6-1 显示了用水平渐变画笔填充的
椭圆和用斜式渐变画笔填充的区域。
图 6-1 水平和斜式渐变画笔
用路径渐变画笔填充图形时,可选择不同的方法来指定当从图形的一部分至另一部分移
动画笔时颜色的变化方式。一种选择是指定中心颜色和边缘颜色,在从图形中间向外边缘移
动画笔时,像素逐渐从一种颜色变化到另一种颜色。图 6-2 显示了用路径渐变画笔填充的路
径(该路径是用一对贝塞尔样条创建的)。
图 6-2 路径渐变画笔
2)基数样条函数
GDI+支持在 GDI 中不支持的基数样条(cardinal spines)。基数样条是一连串单独的曲
线,这些曲线连接起来形成一条较长的光滑曲线。样条由点的数组指定,并通过该数组中的
每一个点。基数样条平滑地(没有锐角)通过数组中的每一个点,因此,比通过连接直线创
建的路径更光滑精准。图 6-3 显示了两个路径:一个以基数样条的形式创建;另一个通过连
接直线创建。
图 6-3 基数样条路径和折线路径
3)持久路径对象
在 GDI 中,路径属于设备上下文,并且会在绘制时被毁坏。利用 GDI +,绘图由 Graphics
对象执行,可以创建并维护几个与 Graphics 对象分开的持久的路径对象(persistent path object)
—— GraphicsPath 对象。绘图操作不会破坏 GraphicsPath 对象,因此可以多次使用同一个
GraphicsPath 对象来绘制路径。
4)变换和矩阵对象
GDI+提供了 Matrix(矩阵) 对象,它是一种可以使(缩放、旋转和平移等)变换
(transformation)简易灵活的强大工具。矩阵对象一般与变换对象联合使用。例如 ,
GraphicsPath 对象具有 Transform 方法,此方法接收 Matrix 对象作为参数。单一的 3×3 矩
阵可存储一种变换或一个变换序列。图 6-4 显示了一个路径在执行两种变换前后的情况。
图 6-4 路径的变换
5)可伸缩区域
GDI+ 通过对可伸缩区域(Scalable Regions)的支持极大地扩展了 GDI。在 GDI 中,
区域被存储在设备坐标中,而且,可应用于区域的惟一变换是平移。而 GDI+在全局坐标中
存储区域,并且允许区域发生任何可存储在变换矩阵中的变换(如缩放和旋转)。图 6-5 显
示一个区域在执行三种变换(缩放、旋转和平移)前后的情况。
图 6-5 区域的三种变换(缩放、旋转和平移)
6)α混色
在图 6-5 中,可以在变换区域(用蓝色阴影画笔填充)中看到未变换区域(用红色填充)。
这是由 GDI+支持的α混色(Alpha Blending,透明混合)实现的。使用α混色,可以指定填
充颜色的透明度。透明色与背景色相混合———填充色越透明,透出的背景色就越多。图
6-6 显示四个用相同颜色(红色)填充、但透明层次不同的椭圆。
剩余210页未读,继续阅读
bloom
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页