来自:http://www.verydemo.com/demo_c92_i174286.html
利用GDI+可以很方便的制作带水印效果的图片,网上介绍这方面的文章也很多,但鲜有Delphi的,本文参照网上文章http://www.codeproject.com/KB/GDI-plus/watermark.aspx介绍的方法,用Delphi 2007制作水印效果图片,原代码如下:
程序运行界面:
代码中已经进行了注释,不再累叙,针对本文所参考的文章内容(Addr:http://www.codeproject.com/KB/GDI-plus/watermark.aspx),作几点说明:
1、在参考的文章中,对文本字体、显示位置进行了测试和计算,本文为强调主要内容,对这些代码进行了简化;
2、在水印底色透明处理中,原文采用的是TGpImageAttributes.SetRemapTable方法,而本文采用的则是TGpImageAttributes.SetColorKey方法,效果是一样的,具体原理可参照我的文章《GDI+ 在Delphi程序的应用 -- 图像的透明显示技巧》;
3、因图片保存为jpeg格式文件时,GDI+自动对图像进行压缩,导致图片效果较差,所以本文保存图片时设置了图像品质编码参数;
4、本文采用的GDI+单元介绍和下载地址见《GDI+ for VCL基础 -- GDI+ 与 VCL》。
如有错误或者指教,请来信:maozefa@hotmail.com
后记:有朋友用C++写本文代码,编译时出现LINK Error: unresolved external '_EncoderQuality' referenced ...错误,其原因是EncoderQuality是用DEFINE_GUID宏定义的GUID,而编译器误认为外部变量,所以出现链接错误。解决的办法是:在#include <gdiplus.h>前添加#include <initguid.h>。(2008.5.16 12:48)