Delphi 12里新增加了skia组件,但是并不能直接使用它去调入SVG文件;由于有skia的原因,诸如Image等组件也应该可以支持SVG文件格式,但并不是。 这是因为,Delphi 12缺少SVG的图形引擎。SVG图形引擎到哪里去找,wiki上有介绍,我试了,没搞明白。而在安装了https://github.com/EtheaDev/SVGIconImageList的组件后,Delphi 12的各相关组件都可以正常使用了。 基于VCL原本就是支持PNG的,但是有了这个SVG之后,支持得更丰富、更好。其中之一,是在Multi-Device下能够直接使用PNG和SVG图像文件制作异形窗口,这种窗口偶尔会在一些奇怪的需求下有用。记录一下步骤。 1.创建Multi-Device Application,拖入一个Image; 2.在lmage1的MultiResBitmap属性里点选0-进入Bitmap设置,调入PNG/SVG图像; PNG/SVG图像底色透明。 3.设置Form1的Transparency为True。 4.再放一个Button,Click里为Form1.Close; 有一些修改需要在Master或Window-Desktop下来回切换。 运行就得到了异形窗口,包括渐变色也是支持的。 在Image1的MouseDown、MouseMove和MouseUp编写获取鼠标坐标、重设窗口Left和Top坐标、设置Flag开关等代码,就能实现窗口拖动了。只能在Image1的事件里面写这些代码,因为此时的Form1已经透明不可见了,写了也没有用。 也算是不方便的一点吧,Multi-Device下的Application,很多平台依赖的比如WinApi函数不能使用了。如果要使用,只能写纯Windows VCL Application,但是企图直接窗体透明和支持渐变色异形窗口,就没这么容易了。 以前网上是有Delphi PNG异形窗口的,但是没有SVG的。另外SVG图像是基于xml的,矢量,放缩不失真,能设置灰色、变体色等,还可以像string一样读来读去、写来写去,显然有别的图像格式不可比拟的优势。不知道什么时候,必是奇兵利器。 |
|
来自: 新用户5228KeDY > 《待分类》