GDI+(VCL)应用
文章平均质量分 91
阿发伯
1988年统计大专自学毕业,1989年业余学计算机语言,包括C/C 、basic、Pascal及asm,曾为本系统(统计)和本地政府编写过一些应用软件,现“知天命”久矣,在大连休息,平时打游戏、上网、研究下编程,因没压力,均无成就,仅打发余生而已。
展开
-
GDI+ 在Delphi程序的应用 -- 调整图像亮度
GDI+ 在Delphi程序的应用 -- 调整图像亮度 调整图像的亮度可以有很多方法,最常用的方法就是对图像像素点的R、G、B三个分量同时进行增加(减少)某个值,达到调整亮度的目的。我在这里使用GDI+图像的扫描线来处理,核心处理采用了2个相同的过程,一个是Pascal过程,一个是嵌入汇编过程,通过比较,对小的图像几乎没有什么区别,对比较大的图像处理还是有一定的区别(具体测原创 2007-01-28 19:24:00 · 8063 阅读 · 5 评论 -
GDI+在Delphi程序的应用 – Photoshop色相/饱和度/明度功能
本文用GDI+实现Photoshop色相/饱和度/明度功能,参照我的其它有关GDI+在 Delphi程序的应用的文章,代码也可供TBitmap使用。 有些人不喜欢,或者不太懂Delphi的BASM代码,所以本文给出纯PAS代码。须说明的是,纯PAS代码效率较低,不适合实际应用。喜欢C/C++的,可以看本人文章《C++实现Photoshop色相/饱和度/明度功能》,除了语言不同,其原创 2009-05-07 13:43:00 · 5354 阅读 · 2 评论 -
GDI+在Delphi程序的应用 – 真彩色图像转索引图像
最近有几张真彩色图片需要转换为GIF图片,直接用GDI+位图转换存储效果太差,网上搜索半天,也没找到完全合适的,有关Delphi语言和GDI+转换的详细资料更是没发现,只好自己写了几个Delphi类,发表在这里供大家参考。 下面是几个真彩色转索引图像类的完整代码:type TImageData = packed record Width: Integer;原创 2009-09-24 23:30:00 · 4746 阅读 · 6 评论 -
Delphi图像处理 -- 真彩色图像转换为低色彩图像
特点: 1、真彩色图像转换为单色、16色、256色及16位(555和565)彩色图像; 2、可选的抖动仿色功能,使图像转换质量得到了很大提高; 3、转换256色索引图像时,使用16位映射表匹配调色板(可选),使转换速度得到了大幅度提高; 4、采用八叉树节点获取索引图像调色板时,使用了图像像素样本进行计算(可选),不仅提高了处理速度,而且也可使图像中的原创 2009-10-14 21:53:00 · 7553 阅读 · 8 评论 -
二值图像的腐蚀和膨胀
二值图像的腐蚀和膨胀图像数字处理中应用相当广泛,代码处理也很简单,只不过一些资料在介绍腐蚀和膨胀原理时,用一些形态学、集合上的概念和术语,搞得也有些”高深莫测“了。 从图像处理角度看,二值图像的腐蚀和膨胀就是将一个小型二值图(结构元素,一般为3*3大小)在一个大的二值图上逐点移动并进行比较,根据比较的结果作出相应处理而已。以二值图的骨架为黑色点为例: 作图像腐蚀处理时,如果结构元素中的原创 2011-12-10 22:17:28 · 17981 阅读 · 22 评论 -
Delphi图像处理 -- 设置阈值
阅读提示: 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括文章《Delphi图像处理 -- 数据类型及公用过程》中的ImageData.pas单元。 GDI+的TGpImageAttributes类原创 2008-08-19 08:42:00 · 5369 阅读 · 5 评论 -
Delphi图像处理 -- 彩色浮雕
阅读提示: 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括文章《Delphi图像处理 -- 数据类型及公用过程》中的ImageData.pas单元和《Delphi图像处理 -- 平面几何变换类》Transf原创 2008-09-02 08:20:00 · 4801 阅读 · 4 评论 -
Delphi图像处理 -- 中值滤波(灰度分组统计法)
阅读提示: 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括文章《Delphi图像处理 -- 数据类型及公用过程》中的ImageData.pas单元。 这是《Delphi图像处理 -- 中值滤波》一文的原创 2012-01-12 09:03:28 · 8342 阅读 · 8 评论 -
Delphi图像处理 -- 颜色矩阵变换
阅读提示: 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括文章《Delphi图像处理 -- 数据类型及公用过程》中的ImageData.pas单元。 本文在《GDI+ ColorMatrix的完全揭秘原创 2008-09-08 21:01:00 · 7840 阅读 · 4 评论 -
C++图像处理 -- 亮度/对比度调整
阅读提示: 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括《C++图像处理 -- 数据类型及公用函数》文章中的BmpData.h头文件。 在《Delphi图像处理 -- 亮度/对比度调整》一文实现了P原创 2011-12-14 08:17:52 · 22397 阅读 · 9 评论 -
C++图像处理 -- 图像合成
阅读提示: 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括《C++图像处理 -- 数据类型及公用函数》文章中的BmpData.h头文件。 在图像处理过程中,图像的合成操作是使用频率最高的,如图像显示、原创 2012-01-04 21:20:49 · 15778 阅读 · 7 评论 -
C++图像处理 -- 图像显示
阅读提示: 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括《C++图像处理 -- 数据类型及公用函数》文章中的BmpData.h头文件以及《C++图像处理 -- 图像合成》中的有关代码。 在《C++图原创 2012-01-06 13:08:44 · 20159 阅读 · 4 评论 -
Delphi图像处理 -- 高斯模糊
阅读提示: 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括文章《Delphi图像处理 -- 数据类型及公用过程》中的ImageData.pas单元。 说明:图像高斯模糊处理代码修改次数最多,此次的修改原创 2010-05-10 21:58:00 · 8884 阅读 · 10 评论 -
Delphi图像处理 -- 最大值
阅读提示: 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括文章《Delphi图像处理 -- 数据类型及公用过程》中的ImageData.pas单元。 图像的最大值处理就是以当前像素为中心,取周边一定半原创 2013-07-16 13:49:19 · 6040 阅读 · 5 评论 -
Delphi图像处理 -- 最小值
阅读提示: 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括文章《Delphi图像处理 -- 数据类型及公用过程》中的ImageData.pas单元。 图像的最小值处理就是以当前像素为中心,取周边一定半原创 2013-07-16 14:08:30 · 4745 阅读 · 0 评论 -
GDI+ ColorMatrix的完全揭秘
无论是用何种语言,只要使用过Windows的GDI+的人对ColorMatrix都不陌生,我的BLOG文章中也多次提到过,并在《GDI+ for VCL基础 -- 颜色调整矩阵ColorMatrix详解》一文中对其功能作了较为详细的讲解,虽然自认对ColorMatrix使用已经相当熟练,但对其原理也是知其然而不知其所以然。直到前几天有位朋友就ColorMatrix实现图像去反功能不原创 2008-09-08 01:41:00 · 12049 阅读 · 14 评论 -
GDI+ 在Delphi程序的应用 -- 文字描边与阴影扩展
自从文章《GDI+ 在Delphi程序的应用 -- 可调节的文字阴影特效》发表后,不少人问我怎样实现文字描边。由于我只是个业余编程爱好者,加上文化底蕴差,只要涉及算法和编程理论方面的东西,我就无能为力了,所以直到目前,我也不知道具体的描边算法是怎样的(网上搜索过N次,也没找到答案,可能这方面的东西是要卖钱的)。 因问得人多了,有时我也思索和研究一下,总算找了个方法可以实现,虽然同原创 2008-08-04 20:35:00 · 9625 阅读 · 0 评论 -
GDI+ 在Delphi程序的应用 -- 制作水印效果图片
利用GDI+可以很方便的制作带水印效果的图片,网上介绍这方面的文章也很多,但鲜有Delphi的,本文参照网上文章http://www.codeproject.com/KB/GDI-plus/watermark.aspx介绍的方法,用Delphi 2007制作水印效果图片,原代码如下:unit Main;interfaceuses Windows, Messages, SysUti原创 2008-05-15 11:33:00 · 12286 阅读 · 16 评论 -
GDI+ 在Delphi程序的应用 -- ColorMatrix与图像灰度化
图像由彩色转化为灰度的过程叫灰度化,也叫去色。 彩色图像灰度化的原理很简单,就是按某种计算方法将图像各像素的R、G、B分量取成同样的值即可。计算方法有几种: 1、每个像素R、G、B各分量的值为该象素R、G、B的平均值; 2、每个像素R、G、B各分量的值为该象素R、G、B中最大值; 3、按YUV颜色空间原理,每个像素R、G、B各分量的值为:Y = 0.原创 2007-01-29 14:15:00 · 5385 阅读 · 7 评论 -
GDI+ 在Delphi程序的应用 -- 图像的透明显示技巧
GDI+ 在Delphi程序的应用 -- 图像的透明显示技巧 在Delphi中,通过设置TBitmap的Transparent、TransparentColor和TransparentMode属性,可以很方便的实现图像中某种颜色的透明显示;也可以采用某种算法对图像像素逐点计算,实现图像各种形式的透明显示。 使用GDI+,可以比常规方式更方便、快捷的实现图像各种形式的透明原创 2007-01-30 21:09:00 · 15127 阅读 · 13 评论 -
GDI+ 在Delphi程序的应用 -- 图像二值化
图像的二值化,无论是理论,还是方法都很多,网上搜索一大堆,本人水平有限,没法完全搞清楚,只在这里针对GDI+在Delphi中如何做一般二值化处理,写一个简单例子。 其实,这个例子在昨天本人发表的《GDI+ 在Delphi程序的应用 -- ColorMatrix与图像灰度化 》中已经给出了基本的代码,只要在其上加一个参数和一句代码就行了: // 灰度或者二值化彩色图像原创 2007-01-30 23:27:00 · 4954 阅读 · 0 评论 -
GDI+ 在Delphi程序的应用 -- FontCollection
GDI+有个FontCollection类,一般情况下很少用到,很多人甚至连这些类是干什么的都不知道。FontCollection本身是个基类,它有两个派生类InstalledFontCollection和PrivateFontCollection,这两个类用好了,可以起到意想不到的作用。 InstalledFontCollection用来枚举当前系统已经安装的原创 2007-07-02 00:29:00 · 4884 阅读 · 2 评论 -
GDI+ 在Delphi程序的应用 -- 多帧(页)图像动画播放
GDI+支持多种图像格式的操作,其中的gif和tiff格式图像可包含多帧(页)图片,在一般的显示中,只能显示图像的第一帧(页)图片。.NET专门有个ImageAnimator类,用来播放此类图像,在Delphi中,我们也可利用GDI+编制自己的多帧(页)图像动画播放类。 笔者写了一个多帧(页)图像动画播放类,为了代码重用,先写了一个基类TImageAnimatBa原创 2007-07-06 14:22:00 · 5070 阅读 · 2 评论 -
GDI+ 在Delphi程序的应用 -- Matrix应用心得
关于GDI+的几何变换类Matrix的理论和应用有很多书籍和文章介绍,本文只是谈一点自己的应用心得。 使用GDI+的Matrix类,可以很方便的进行提供了Rotate(旋转)、Scale( 缩放)、Shear(切变)等线性变换和Translate(平移),还可以通过这几个基本的变换组成更复杂的复合变换。通过变换后的图形及原点坐标变化很大,如下面的语句: g.原创 2007-07-10 01:09:00 · 5928 阅读 · 0 评论 -
GDI+ 在Delphi、C++Builder程序的应用 -- IStream
GDI+的Image及派生类中涉及到IStream流,在Delphi和C++Builder中广泛使用的TStream不能直接作为参数进行传递,VCL提供了一个TStreamAdapter类,用于把VCL流TStream转换为IStream。TStreamAdapter的构造过程原型如下: constructor Create(Stream: TStream; Ownershi原创 2007-07-12 00:35:00 · 10749 阅读 · 2 评论 -
GDI+ 在Delphi程序的应用 -- 线性调整图像亮度
我曾写过2篇关于GDI+图像亮度调整的文章:《GDI+ 在Delphi程序的应用 -- 调整图像亮度》和《GDI+ 在Delphi程序的应用 -- ColorMatrix与图像亮度》,前者采用GDI+的Bitmap扫描线逐点增加或减少图像像素RGB的值,后者则通过设置GDI+的ColorMatrix进行调整,但是这两种方法都属于非线性的亮度调整,优点是代码简单、速度快,缺点是在调整亮度原创 2007-08-25 19:38:00 · 6131 阅读 · 4 评论 -
GDI+ 在Delphi程序的应用 -- 仿Photoshop的明度调整
这几天研究了一下Photoshop的色相/饱和度命令,也就是所谓的HSB颜色模式,没完全搞明白,网上搜索也没一点结果,看了一些介绍HSB算法的文章,其实讲的就是HSV或者HSL的算法。 关于PS色相/饱和度中的色相,就不用研究了,原理和HSV或者HSL的H都是一样的。 而饱和度在-100,0,+100这三点上的效果与HSL完全一样,其它范围就有区原创 2007-09-04 23:00:00 · 6620 阅读 · 5 评论 -
GDI+ 在Delphi程序的应用 -- 图像饱和度调整
图像的饱和度调整有很多方法,最简单的就是判断每个象素的R、G、B值是否大于或小于128,大于加上调整值,小于则减去调整值;也可将象素RGB转换为HSV或者HSL,然后调整其S部分,从而达到线性调整图象饱和度的目的。这几种方法我都测试过,效果均不太好,简单的就不说了,利用HSV和HSL调整饱和度,其调节范围很窄,饱和度没达到,难看的色斑却出现了。而Photoshop的饱和度调整调节范原创 2007-09-11 20:27:00 · 10220 阅读 · 7 评论 -
GDI+ 在Delphi程序的应用 -- ColorMatrix与图像亮度
年初,我写了一篇关于GDI+亮度调整的文章,见《GDI+ 在Delphi程序的应用 -- 调整图像亮度》,采用的是扫描线逐点改变,当时有网友评论时提出是否可以ColorMatrix进行调整,我觉得图像像素值上下限不好控制,加之没时间没去研究,今天,我却发现该网友提出的方案居然是切实可行的。改变图像亮度,实际就是对像素点的各颜色分量值作一个平移,使用ColorMatrix进行平移是个轻而原创 2007-06-19 11:55:00 · 4221 阅读 · 0 评论 -
GDI+ 在Delphi程序的应用 -- 可调节的文字阴影特效
利用GDI+输出文字阴影效果有多种方法,最简单的就是第一次输出有偏移的灰色文字,第二次输出正常文字。下面是仿C#文字输出例子里的代码片断,输出了这种带阴影的文字: serifFontFamily := TGpFontFamily.GenericSerif; //Load the fonts we want to use titleFont := TGpFont.Cre原创 2007-12-17 23:04:00 · 12640 阅读 · 16 评论 -
GDI+ 在Delphi程序的应用 -- 多帧(页)图像的分解与合成
GDI+ 在Delphi程序的应用 -- 多帧(页)图像的分解与合成 在GDI+支持的各种图像格式,gif格式和tiff格式图像可包含多帧(页)图片,GDI+可以很方便的分解和合成多帧(页)图片。 下面是个简单的多帧(页)图片分解与合成例子:unit main1;interfaceuses Windows, Messages, SysUtils,原创 2007-12-21 00:14:00 · 7086 阅读 · 7 评论 -
GDI+ 在Delphi程序的应用 -- GDI+图像与GDI位图的相互转换
Delphi的TBitmap封装了Windows的GDI位图,因此,TBitmap只支持bmp格式的图像,但是在Delphi应用程序中,常常会遇到图形格式的转换,如将Delphi位图TBitmap的图像转换为其它格式保存,或者将其它图像格式转换为TBitmap等。这时候,我们往往借助一些第三方组件或代码,Delphi自带的TJPEG.pas就是jpeg格式图像转换的第三方代码单元。原创 2008-01-08 22:32:00 · 10061 阅读 · 10 评论 -
Delphi图像处理 -- 图像色阶调整
在Photoshop中,图像色阶调整应用很广泛,本文介绍的图像色阶调整过程与Photoshop处理效果基本一致。原创 2010-06-02 22:57:00 · 7449 阅读 · 8 评论