本控件包使用了三个渲染 SVG 的引擎(Delphi Image32、Skia4Delphi、Direct2D 包装器)和四个简化 SVG 图像使用的组件(调整大小、固定颜色、灰度……
正式版 4.4.2 (VCL+FMX)
元件 | 描述 |
---|---|
|
TSVGIconImageCollection 是 Delphi 的 SVG 图像集合,用于为 SVGIconVirtualImageLists 提供集中的图像列表(仅适用于 VCL) |
|
TSVGIconVirtualImageList 是 Delphi 的一个特殊的“虚拟”ImageList,链接到一个 SVGIconImageCollection(仅用于 VCL)以简化 SVG 图标的使用(调整大小、不透明度、灰度等等…… |
|
TSVGIconImage 是 Delphi (VCL+FMX) 的扩展图像组件,用于直接显示任何 SVG 图像或包含在具有所有功能(拉伸、不透明度、灰度等)的 SVGIconImageList 中。 |
|
TSVGIconImageList 是 Delphi (VCL+FMX) 的扩展 ImageList,带有嵌入式 SVG 图像集合。使用此组件来简化旧 Delphi 应用程序的 ImageList 替换,并获得图标的自动缩放! |
安装控件包
从 4.4.0 版本开始,新的“安装程序”可读功能位于“发布”区域:下载安装程序。
安装程序会自动检测您的 Delphi 版本、安装源代码、构建和安装软件包以及添加源代码路径。
您可以直接从 WEB 搜索和下载 Icons!
从版本 4.3 开始,组件编辑器中现在提供了一项集成服务,可通过 iconify.design 提供的 API 从 WEB 下载 SVG 图标。
现在,您可以在组件编辑器中选择“从 WEB 添加”:用于搜索和从 WEB 下载的新表单可用于 VCL 和 FMX 平台。
重要通知
从 4.0 版本开始,TSVGIconVirtualImageList 继承自 TVirtualImageList(使用 Delphi 10.3 到最新版本)。对于以前的 Delphi 版本,TSVGIconVirtualImageList 继承自 TSVGIconImageListBase。
一个重要的区别是 TVirtualImageList 只能使用和创建集合中图像的子集。
虽然标准 TVirtualImageList 没有 FixedColor、GrayScale、ApplyToRootOnly 和 Opacity 属性,但这些属性存在于 TSVGIconImageCollection 中,它们将反映在链接的 TVirtualImageList 上,但如果您在集合级别更改这些属性,则所有链接的 VirtualImageList 都会更改!
因此,现在 TSVGIconVirtualImageList 还具有 FixedColor、GrayScale、ApplyToRootOnly 和 Opacity 属性,因此您只能在 VirtualImageList 级别设置这些属性,并且可以与不同的用户共享来自多个 VirtualImageList 的相同 TSVGIconImageCollection,如您在新的 SVGIconVirtualImageListDemo 中所示。
因此,如果你正在使用 Delphi 10.3 中的那些组件,建议的组合应该是 TSVGIconImageCollection + TSVGIconVirtualImageList。
当您有一个包含许多链接 Actions 的大型 ImageCollection 时,也不要忘记 PreserveItems 的重要性。如果不将此属性设置为 “True”,则每次在集合中添加或删除图标时,都必须检查并更改所有 Actions 的 ImageIndex。
Delphi 10.4 版本的另一个功能是 TSVGIconImageCollection 继承自 TCustomImageCollection,因此您也可以将其与 TVirtualImage 组件一起使用,并将 SVG 图标放入 TControlList 组件中,如此处所述……
选择您喜欢的 SVG 引擎!
有三种实现方式:
-
本机 Delphi Image32(默认),使用 Angus Johnson 的 Image32 库
-
使用 Skia4Delphi 库,这是一个基于 Google Skia 图形库的跨平台 2D 图形 API
-
本机 Windows Direct2D 实现的包装器
性能比较
下表显示了使用 SVGExplorer 测试的三个渲染引擎的性能,使用来自不同集合的大量图标,以 128×128 像素渲染。
图标数 | 图标集 | Image32 | D2D | Skia4Delphi |
---|---|---|---|---|
997 | Font-Awesome | 1265 毫秒 | 1453 毫秒 | 1172 毫秒 |
654 | Papirus | 2750 毫秒(1) | 937 毫秒 | 1266 毫秒(1) |
5366 | Material-Design | 11015 毫秒 | 12001 毫秒 | 10688 毫秒 |
如您所见,这三个引擎的性能因图标及其复杂性而异。
(1)请注意,Image32 和 Skia4Delphi 是唯一能够渲染模糊效果的引擎(计算起来总是很慢):这就是渲染包含模糊效果的 Papirus 图标性能“慢”的原因。
VCL 版本的示例图像
FMX (Windows) 版本的示例图像
VCL SVGText 属性编辑器(VCL 和 FMX)的示例图像