求助 Timage.picture.icon颜色失真 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiMultimedia/html/delphi_20060929102339279.html
image1.Picture.Icon.Handle :=extractIcon(hinstance, pchar(ParamStr(1)),0);
image1.Picture.Icon.SaveToFile(pchar(paramstr(2)))
保存颜色就变了,怎么办
实际上,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图标).
-------------------------------------------------------
本回复由大傻的破玩意儿【CSDN's forum Explorer】完成!
大傻的破玩意儿,今天你用了木有 !!
软件功能强大,速度超快!!支持中...
软件下载地址:http://CoolSlob.ys168.com
能不能说得详细点,我不知道这么做
我用的是vb,只是因为图标的问题才用DELPHI的。InternalGetDIBSizes和InternalGetDIB放在哪??