没有合适的资源?快使用搜索试试~ 我知道了~
GDI+_for_VCL基础
需积分: 10 10 下载量 11 浏览量
2010-08-19
16:45:36
上传
评论
收藏 1.85MB DOC 举报
温馨提示
试读
64页
GDI+是伴随Windows XP系统出现的增强性图形设备接口子系统,除了一整套API外,还提供了几十个C++类和大量的数据类型,同传统的Win32 GDI相比,GDI+不仅优化和扩展了GDI,而且使得使用C/C++开发Windows程序图形界面更容易操作。但是,对于Delphi和C++Builder所共用的VCL来说,由于VCL通过TCanvas、TBitmap和TImage等及其相关的类,把传统的GDI封装的几乎无可挑剔,类似C++的GDI+类,在易操作上就没什么优势可言了。
资源推荐
资源详情
资源评论
GDI+ for VCL 基础
GDI+ for VCL 基础 -- 图像显示辅助类 ImageAttributes
的 是个图像显示辅助类,可以通过该类,对图像显示时的颜色调整进行各种设置,包括颜色调整
矩阵、灰度调整矩阵、灰度校正值、颜色映射表、颜色阈值、关键色(透明色)和通道输出等,从而改变图像显示状态。阅读全文
发表于 年 月 日 评论! " 编辑
GDI+ for VCL 基础 -- 颜色调整矩阵 ColorMatrix 详解
#$% 是通过 &'& 矩阵对图像颜色(包括 #()进行的几何变换,理解和掌握 #$% 变换,能使你的图像产生千变万化
的效果阅读全文
发表于 年 月 日 ))) 评论!) " 编辑
GDI+ for VCL 基础 -- 画笔
提供了很多绘图方法,如直线、曲线、圆弧、矩形、椭圆、扇形、多边形以及路径线条等,这些图形都需要使用 画笔对象。
阅读全文
发表于 年 月 * 日 +& 评论! " 编辑
GDI+ for VCL 基础 -- 画刷之 PathGradientBrush
的 ,(-./(类用渐变色来填充形状的方式。一个 ,(-./( 对象有一个轨迹边界和一个
中心点。可为轨迹的中心指定一种颜色,为轨迹的边界指定另一种颜色。还可为轨迹边界上的多个点分别指定颜色。阅读全文
发表于 年 月 & 日 & 评论! " 编辑
GDI+ for VCL 基础 -- 画刷之 LinearGradientBrush
的 .-./( 采用颜色线性渐变填充图形,包括双色渐变和多色渐变,渐变的方向是沿着指定的角度或
者 点之间的直线进行的。阅读全文
发表于 年 月 + 日 )) 评论! " 编辑
GDI+ for VCL 基础 -- 画刷之 TextureBrush
的 %/( 为纹理刷,也叫位图填充刷,顾名思义,是使用位图中的纹理来填充图形的画刷阅读全文
发表于 年 月 + 日 评论! " 编辑
GDI+ for VCL 基础 -- 画刷之 HatchBrush
01(/( 不仅提供了多达 &) 种的阴影样式(填充图案),而且可以设置图案的前景色和背景色。阅读全文
发表于 年 月 ) 日 ) 评论! " 编辑
GDI+ for VCL 基础 -- 画刷之 SolidBrush
实色刷是 最简单也是最基础的画刷,它以 的 2/ 颜色填充图形。阅读全文
发表于 年 月 ) 日 &) 评论! " 编辑
GDI+ for VCL 基础 -- GDI+ 与 VCL
同网上流通的 #( 版本比,本文介绍的 版本并没有完全照搬原 代码,兼顾了部分 和345 风格,
比如加入了 异常、布尔类型和绝大部分枚举和集合类型都采用了 风格、增加了345 风格的 ,. 和 /( 等全局变量!/#-"
或者全局函数!#("。阅读全文
GDI+ 与 VCL
陆续写了十几篇关于《在 #( 程序的应用》的文章后,应几个小友来信要求,将我所使用
的 6,包括 #( 和 /#- 版发布在了 1-. 的资源下载区,下载地址:
(77-8.#-31-.3.717*+
6666666其中的 #( 版与目前网上流通的版本不完全兼容;而 /#- 本来自带有 版的
-#,但由于与 有些冲突,使用起来较麻烦,所以本人参照 #( 版完全重新写了一个供
/#- 使用的 版(开源的),本 /9 中的有关 的 #( 例子很容易就移植到
/#-。
6666666下面就 的一些特点作简单介绍:
6666666是伴随 :.-8;, 系统出现的增强性图形设备接口子系统,除了一整套 , 外,还提供了
几十个 类和大量的数据类型,同传统的 :.) 相比,不仅优化和扩展了 ,而且使得
使用 7开发 :.-8 程序图形界面更容易操作。但是,对于 #( 和 /#- 所共用的
来说,由于 通过 .<、/ 和 等及其相关的类,把传统的 封装的几乎
无可挑剔,类似 的 类,在易操作上就没什么优势可言了。但是,要想把 封装成完全的
风格也存在几个问题:
6666666、正是由于 对 良好的封装, 所有与界面和图形有关的类对 存在严重的依赖性,
即使 封装成完全的 风格,也无法“插足”已有的界面和图形类,充其量只能起到“敲敲边鼓”的辅
助作用,所以把 封装成完全的 风格意义不大,除非 为主,完全重构原有的界面和图形类;
6666666、现有大量的 、345 有关 的代码移植到 #((/#)时,结构修改量太
大,而且对于已经熟悉 或者345的人来说,重新掌握新的 风格无疑是痛苦的;
6666666)、的坐标计量类型有整数和实数 套,如果按 风格写,势必要舍弃一套,保留整数型
当然是最好的,但这 套类型又都不那么完整,整数型更是个半吊子系统。
6666666鉴于以上原因,无论是目前网上流通的 #( 版本,还是本人改写的 ,
都基本采用了原 类风格,甚至于3. 的 版本也与3. 其它类风格不一样,更多的保留了原
风格(就我个人的看法,不知什么原因,版本无论是架构设计,还是代码水平,其
实都很差,同 的 = 没法比)。
6666666当然,同网上流通的 #( 版本比,我改写的 版本并没有完全照搬原
代码,兼顾了部分 和345 风格,比如加入了 异常、布尔类型和绝大部分枚举和集合类型
都采用了 风格、增加了345 风格的 ,. 和 /( 等全局变量!/#-"或者全局函数
!#("。
6666666 的所有类(不包括 ,. 和 /()都派生于 -#/:
66#.,6>6.1.!4<64<?6<61#.64<"6=?6-1##?
66-#/6>61#!9@1"
66<
6666A4<64<?
661-
66661.16#.!=14<64<?61#..16#.,6>6.#"?
6666B64<64<6-6A4<686A4<?
66#1
66661.16?
66661#6.1.648..169@1?6<-?
66661-6A..1?6<-?
66.-?
6666666原 的 -#/ 只是重载了 .8 和 -# 操作符,分别以 的 -##1 和 -A 替换了原系统默认
的内存分配和释放方法,而 -#/ 也相应的重载了 9@1 的 48..1 方法和 A..1 方法(其实在不重载也能
正常运行);
6666666在 -#/ 中有个保护的 4<(指针)类型的成员 4<(#( 中说明为属性,#- 直接说明
为数据成员),供所用派生类使用(原 类将这个成员分散说明在各个类中),这个数据成员就是 -#3-## 内部使用的类指针,
类都是通过对应的内部类指针对 ##5% 函数的调用实现的(假如你讨厌 的类,你完全可以抛开它们而直接使用指针
操作原始的 ##5% 函数);
6666666至于 -#/ 构造方法 #. 则是我为了简化派生类的 #. 方法所提供的基类保护方法。
6666666 定义了一个异常类 5-#5%1.:
665-#5%1.6>61#!5%1."
66<
6666A-56=?
6666.1.6-5=.6.?
66#1
66661.16=!=6="?
6666B6-56=6-6A-5?
6666B6-5=.6.6-6-5=.?
66.-?
6666666除各类的析构方法外,其它类方法都使用了异常检查,这使得 代码同原 代码和目前流通的
#( 比,更加方便和健壮,通过使用 5-#5%1.3-5 或者 5-#5%1.3-5=.,可以得到
最后一次异常代码或信息。
6666666 重新定义了绝大多数数据类型,如将 风格的常量和枚举类型改为了 风格的枚举和集合类型,重
构某些数据结构,以提供对 数据类型的支持或转换。以 # 类为例,改写后的 #:
77C.8.#
D-E.66C.8.#.66+
11.2/F1#1/#66>%GG?
11.2/F1.H:(6>%G-?
!略"
1#6#
I
<
6666..
6666I
666666662/6A2/?
666666661
66666666I
666666666666/J56A/#?
666666666666/J56A.?
666666666666/J56A2-?
666666666666/J56A#(?
66666666K?
6666K?
666616-.$5.B6C.8.#LM?
6666<-6$F2/!/J56N6/J56N6/J56N6/J56"?
6666<-6$F2/!/J56N6(1#61#"?
666699225A699225A!"?
6666.=.6C.8.4!<-"?
#1
6666#!"?
6666#!#6O1#"?
6666#!2/6"?
6666#!/J56#(N62/6"?
6666#!/J56N6/J56N6/J56"?
6666#!/J56N6/J56N6/J56N6/J56"?
6666#!/J56#(N6(1#61#"?
6666#!(1#61#"?
6666#!.=.64N6/J56#(6>6&&"?
666616#6A#!/J56#(N6(1#61#"?
666616#6A#!(1#61#"?
666616#6A!2/6"?
666616#6A!/J56#(N62/6"?
666616#6A!/J56N6/J56N6/J56"?
666616#6A!/J56N6/J56N6/J56N6/J56"?
666616#6A4!.=.64N6/J56#(6>6&&"?
666616#6A99225A!/J56#(N699225A6"?
666616#6A99225A!99225A6"?
6666#65B!"?
6666#O66>6!#61"?
6666#O66>6!2/61"?
剩余63页未读,继续阅读
资源评论
pzhliaoyang
- 粉丝: 0
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功