Delph32位色图标

 

实际上,delphi是支持任意颜色的图标的.你自己可以试验一下:写个程序,读入
Image1.Picture.Icon.LoadFromFile();读入一个大于16色的图标,显示颜色是正常的.然
后保存Image1.Picture.Icon.SaveToFile();到文件,用其它软件打开该图标,颜色也是正
常的.所以说,delphi是支持高彩色的.
但是,如果你把它赋给一个TIcon再保存,就只有16位色了.原因很简单.Delphi的Graphics
单元有BUG.实际上,它会调用Graphics单元的
procedure WriteIcon(Stream: TStream; Icon: HICON; WriteLength: Boolean);过程.
问题就在这里:
...
InternalGetDIBSizes(IconInfo.hbmColor, ColorInfoSize, ColorBitsSize, 16);
...
InternalGetDIB(IconInfo.hbmColor, 0, ColorInfo^, ColorBits^, 16);

把上面的两个16改成65536,然后删除Graphics.dcu,重新编译.即可支持65536色了(XP图标).

 

D7中的InternalGetDIB(IconInfo.hbmColor, 0, ColorInfo^, ColorBits^, 16);
已经变为InternalGetDIB(IconInfo.hbmColor, 0, ColorInfo^, ColorBits^, -1);
所以用BDS2006就没有问题了

 

附:如何重新编译Graphics单元?

新建一个工程,用shift+F11加入pas文件。编译工程就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值