我们在程序中,只支持古老的BMP或ICO格式的图标,比如 TImageList/TSpeedButton,要在其中使用带透明度的SVG图标,我们提供了简单的转换函数,让旧的 VCL 组件焕然一新。
1、将图片转换为 ICO 格式
使用 ToIcon 转换SVG图片到带透明度的图标,ToIcon 需要指定生成的图标的宽度和高度
var
ASvg:TZSvgImageLite;
AIcon:TIcon;
begin
ASvg:=TZSvgImageLite.Create;
...
AIcon:=TIcon.Create;
//我们生成一个 16x16 px 的 Icon 国标
ASvg.ToIcon(AIcon,16,16);
//现在这个 Icon 图标已经准备就绪,可以使用了
...
FreeAndNil(ASvg);
FreeAndNil(AIcon);
end;

2、将图片转换为 BMP 格式
使用 ToBitmap 转换SVG图片到带透明度的 Windows 位图
代码参考上面,只是将 ToIcon 转换为 ToBitmap 并去掉宽度和高度参数即可(高度和宽度取位图对象自带属性)
3、将图片转换为 PNG 格式
参考上面的代码,需要先定义一个 TBitmap 对象,然后调用 ToBitmap 将 SVG 矢量图转换为32位带透明度的位图,然后再通过 TPngImage 的 Assign 将位图数据复制到 TPngImage 实例即可。
var
ASvg:TZSvgImageLite;
ABitmap:TBitmap;
APng:TPngImage;
begin
ASvg:=TZSvgImageLite.Create;
APng:=TPngImage.Create;
...
ABitmap:=TBitmap.Create(32,32);
//我们生成一个 32x32 px 的缩略图
ASvg.ToBitmap(ABitmap,32,32);
APng.Assign(ABitmap);
...
FreeAndNil(ASvg);
FreeAndNil(ABitmap);
FreeAndNil(APng);
end;
4、将图片转换为 JPEG 格式
同上,只是将 TPngImage 换成 TJpegImage 即可。