分享

Delphi 12 FMX下的PNG/SVG异形窗口

 新用户5228KeDY 2024-01-03 发布于北京

Delphi 12里新增加了skia组件,但是并不能直接使用它去调入SVG文件;由于有skia的原因,诸如Image等组件也应该可以支持SVG文件格式,但并不是。

这是因为,Delphi 12缺少SVG的图形引擎。SVG图形引擎到哪里去找,wiki上有介绍,我试了,没搞明白。而在安装了https://github.com/EtheaDev/SVGIconImageList的组件后,Delphi 12的各相关组件都可以正常使用了。

基于VCL原本就是支持PNG的,但是有了这个SVG之后,支持得更丰富、更好。其中之一,是在Multi-Device下能够直接使用PNGSVG图像文件制作异形窗口,这种窗口偶尔会在一些奇怪的需求下有用。记录一下步骤。

1.创建Multi-Device Application,拖入一个Image

2.lmage1MultiResBitmap属性里点选0-进入Bitmap设置,调入PNG/SVG图像;

PNG/SVG图像底色透明。

3.设置Form1TransparencyTrue

4.再放一个ButtonClick里为Form1.Close;

有一些修改需要在MasterWindow-Desktop下来回切换。

运行就得到了异形窗口,包括渐变色也是支持的。

Image1MouseDownMouseMoveMouseUp编写获取鼠标坐标、重设窗口LeftTop坐标、设置Flag开关等代码,就能实现窗口拖动了。只能在Image1的事件里面写这些代码,因为此时的Form1已经透明不可见了,写了也没有用。

也算是不方便的一点吧,Multi-Device下的Application,很多平台依赖的比如WinApi函数不能使用了。如果要使用,只能写纯Windows VCL Application,但是企图直接窗体透明和支持渐变色异形窗口,就没这么容易了。

以前网上是有Delphi PNG异形窗口的,但是没有SVG的。另外SVG图像是基于xml的,矢量,放缩不失真,能设置灰色、变体色等,还可以像string一样读来读去、写来写去,显然有别的图像格式不可比拟的优势。不知道什么时候,必是奇兵利器。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多