GitHub上的RAD Studio Delphi 10.3和10.4支持SVG的开源项目

以下来自DelphiPraxis论坛pyscripter

我不知道很多知道,因为Windows更新创作者工具,SVG解析和画是原生支持,是Direct2D中的一部分。我想测试此Windows功能,但是,第一个障碍是Delphi附带的Direct2d标头非常老。

https://quality.embarcadero.com/中有两张公开投票 。

缺少Direct2D 1.1支持(自XE7开始开放!)
https://quality.embarcadero.com/browse/RSP-10159

缺少Direct2D 1.2和1.3支持
https://quality.embarcadero.com/browse/RSP-21071

SVG解析和绘画自MS Windows Creators
https://docs.microsoft.com/en-us/windows/win32/direct2d/svg-support以来,它本身就受支持并且是Direct2D的一部分

您可能想要投票给他们,因为缺乏良好的Direct2D支持(包括DirectWrite),这有点遗憾。

然后,我查看了其他Direct2D转换,发现其中两个定期更新。 
https://github.com/FactoryXCode/MfPack/tree/Master/MfPack
https://github.com/CMCHTPC/DelphiDX12

他们俩都有一些问题,但这是一个好的开始。事实证明,将svg文件解析和绘制到Canvas非常简单。一旦建立了渲染器(Vcl.Direct2d做到了这一点,但是很容易从头开始),您就可以用两行代码来完成所有工作。

fDeviceContext5.CreateSvgDocument(fStream,D2D1SizeF(ClientWidth,ClientHeight),fsvgDocument);
fDeviceContext5.DrawSvgDocument(fsvgDocument);

您可以通过以下方式检查Svg是否受支持:

如果Supports(rt,ID2D1DeviceContext5,fDeviceContext5)然后
...

则很容易进行缩放,不透明度,旋转,重新着色等操作。质量和速度似乎不错,但是存在一些限制,最重要的是我认为是缺少对text元素的支持。我附上了我的测试项目的源代码(没有依赖项),以防有人想玩它。Svg在调整表单大小时自动缩放。

https://en.delphipraxis.net/applications/core/interface/file/attachment.php?id=2648

关于用于SVG创建的Affinity Suite工具
https://youtu.be/UVqJIaMlB6E

TMS VCL UIPack支持SVG的SVG
GitHub项目支持

https://github.com/EtheaDev/SVGIconImageList
https://github.com/EtheaDev/IconFontsImageList
https://github.com/publicjoke/freepascal_resvg

SVGIconImageList:现在还可以使用链接到TSVGIconImageCollection的本机VirtualImageList(从10.3或10.4开始)!
如果您使用的是较早的Delphi版本,则可以使用TSVGIconsVirtualImageList。欢迎加入Delphi开发局QQ群:32422310  Delphi控件源码下载网站 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值