Skia是一个开源的2D图形库,提供跨平台的通用绘制API,它有着高性能、高精度、高质量。谷歌很多产品如Chrome、Android、Flutter都是用它作为图形引擎的。
官网:https://skia.org/
主要功能有:
2D画布和文本布局
GPU加速渲染
支持从右到左的顺序绘制文本
SVG图片格式的渲染和创建
PDF输出
各种动态效果
着色语言
着色器、蒙板、颜色过滤器
动态图片播放器
多种图片编码解码器(bmp、gif、ico、jpg、png、wbmp、webp等)
能否用于Delphi中呢?答案就是使用Skia4Delphi!
在FireMonkey程序中,Skia4Delphi可以将Delphi自带的绘制引擎替换为使用Skia,而且你的应用就自动拥有如下提升:
在所有平台上可以有抗锯齿效果,显示更顺滑(根据窗体的Quality属性)
整体的图形绘制性能提升50%(即使使用更高的质量绘制)
调整图片尺寸时质量更好(根据窗体的Quality属性)
修复FMX自带引擎中的一些绘制问题
Skia支持的框架:
SKia不仅能在FMX和VCL工程中使用,还能在控制台程序中使用,所以在服务程序中也能使用Skia对图片进行处理。
功能集 | FMX | VCL | 控制台 | 描述 |
Skia API | ✔ | ✔ | ✔ | 可以使用Skia.pas来访问纯Skia库 |
控件 | ✔ | ✔ | | TSkAnimatedImage,TSkLabel, TSkPaintBox, and TSkSvg. |
应用渲染 | ✔ | | | 替换自带的绘制引擎为Skia |
Skia支持哪些操作系统?
查看Skia的官网,它上面写着:
Windows:7,8,8.1,10
MacOS:10.13+
IOS:11+
Android:4.1+
Linux:Ubuntu 18.04+,Debian 10+,openSUSE 15.2+,Fedora Linux 32+
主流的操作系统版本都是支持的。
Skia4Delphi支持哪些Delphi版本?
通过Skia4Delphi的安装程序界面,
我们就能知道它只支持XE7以后的Delphi,
XE7~D10.2:它只支持Windows
D10.3以后,它开始支持Android
到D11,Delphi支持的所有平台它都支持了,什么IOS、MacOS、Linux。
如何下载并安装Skia4Delphi?
Skia4Delphi是一套开源控件,
目前最新版本是6.0.0Beta,
在Github地址:
https://github.com/skia4delphi/skia4delphi
安装包下载地址:
https://github.com/skia4delphi/skia4delphi/releases
安装完之后,在控件面板中可以看到Skia有五个控件:

工程如何启用Skia?
只需要在工程中右键,在弹出菜单中选择“Enable Skia”即可。

“Enable Skia”干了什么呢?
第一,它将Skia的库布署到了你的应用程序目录,

第二,如果是FMX工程,那么它会在工程源码中添加了一句代码,表示将FMX自带的绘制引擎切换为使用Skia,也就是所有的FMX控件都会使用Skia进行绘制,它能提高绘制的质量和性能。

Skia与FMX自带绘制引擎的效果比较
我用画布在PaintBox上画一些图形,代码如下:
看看FMX自带引擎的效果:

再看启用Skia之后的效果:
一眼就能看出来了,自带引擎画圆的时候特别粗糙。
PDF输出
使用Skia你可以创建PDF文档并绘制任何东西,比如文本、图片。

运行之后,生成了PDF:

打开看一下:

图片的编码解码:
Skia支持解码的图片格式(也就是能显示的图片格式)
图片格式 | 后缀名 |
Bitmap | .bmp |
GIF | .gif |
Icon | .ico |
JPEG | .jpg,.jpeg |
PNG | .png |
Raw Adobe DNG Digital Negative | .dng |
Raw Canon | .cr2 |
Raw Fujifilm RAF | .raf |
Raw Nikon | .nef,nrw |
Raw Olympus ORF | .orf |
Raw Panasonic | .rw2 |
Raw Pentax PEF | .pef |
Raw Samsung SRW | .srw |
Raw Sony | .arw |
WBMP | .wbmp |
WebP | .webp |
支持编码的图片格式(能保存为哪些图片格式)
图片格式 | 后缀名 |
JPEG | .jpg,.jpeg |
PNG | .png |
WebP | .webp |
WebP是一个现在流行的图片格式,提供更卓越的无损和有损压缩。和PNG相关,WebP无损图像的文件体积小26%。WebP有损图像和同等质量的JPEG图像体积小25~34% .
举个例子来演示下如何将图片编码为WebP格式:
运行之后,可以看到:
图片格式 | 体积 |
PNG(100%质量) | 513k |
JPEG(80%质量) | 66k |
WebP(80%质量) | 52k |
自带丰富的示例:
游戏示例:
手写示例:
图像处理:
等等……
相信借助Google Skia,使用Delphi开发出来的应用会越来越出色!
赶紧下载体验吧!
相信借助Google Skia,使用Delphi开发出来的应用会越来越出色! 赶紧下载体验吧!
发表评论