IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Skia4Delphi 在 Delphi 里面利用 Skia 画图 -> 正文阅读

[开发工具]Skia4Delphi 在 Delphi 里面利用 Skia 画图

简介

Skia 是一个 2D 库,画图性能非常好。是由 Google 开源出来的。

在 Delphi 里面如何使用这个 2D 库,来利用它提供的一些好处?

有一个开源的项目,Skia4Delphi 很好地解决了这个问题。它使得 Delphi 的 VCL 程序和 FMX 程序都能利用 Skia 库来画 2D 图。比如,可以用 Delphi 的程序来显示 WebP 这种格式的图,SVG 的图,等等。当然,Skia 还有很多 2D 图的算法。

这个开源项目在:https://github.com/skia4delphi/skia4delphiicon-default.png?t=M4ADhttps://github.com/skia4delphi/skia4delphi

在 Delphi 里面,也可以通过 IDE 的 GetIt 菜单来安装它。?

简单的使用测试

首先,它自己带的例子程序,非常棒。基本上演示了所有功能。想要知道如何使用,看例子程序的代码就可以了。

我的测试

我测试了 FMX 的程序。在 Delphi 里面,自己新建一个跨平台项目,这样就创建了一个基于 FMX 的程序。

拖一个 TArc 到界面上,设置其 Stroke 属性的 Kind 为 Gradient,同时设置其 Gradient 属性(鼠标点击属性面板上对应条目右边的小按钮,弹出设置窗口)对应的开始颜色和结束颜色。马上就可以在设计期的屏幕上,看到一个半圆弧,颜色是渐变色的。为了看得明显,设置 Stroke 的 Thickness 属性为 10,它的线条变粗。

编译目标平台设置为 WIN32,点 IDE 的运行按钮,Delphi 将这个程序编译为 Windows 程序并运行,从运行的程序上看,这个半圆和设计期屏幕上看到的一样。

编译目标平台设置为 Android,把手机插到电脑上,点 IDE 的运行按钮,稍等一会后,APP 在手机上安装并运行。这时候我们会发现,这个半圆,在手机屏幕上,是黑色的。和设计期设置的渐变色没有丝毫关系。这是我使用 Delphi 10.4.2 得到的结果。这个应该是 FMX 的一个 BUG。不知道截止目前为止最新的 Delphi 11 解决了这个问题没有。另外,手机屏幕上的这个半圆,不平滑,仔细看,似乎是折线拼凑的,而不是一个圆滑的半圆。

当把这个测试程序,改为使用 Skia 库来画图以后,这个半圆在我的安卓手机上,显示正常。渐变颜色正常,也非常平滑。

如何让程序支持 Skia

工程的源文件增加 Skia 的相关声明代码,例子如下:

program test;

uses
  System.StartUpCopy,
  FMX.Forms,
  Skia.FMX,  //--- 这里增加一行
  Unit1 in 'Unit1.pas' {Form1},
  UFrameGauge in 'UFrameGauge.pas' {FrameGauge: TFrame},
  UFrameIntf in 'UFrameIntf.pas';

{$R *.res}

begin
  GlobalUseSkia := True; //这里增加一行
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

GlobaUseSkia 这一行加上后,FMX 的其它图形控件,不用修改代码,也自动变为使用 Skia 库画图。当然,Skia4Delphi 安装在 IDE 里面后,控件面板上会出现一些 Skia 自己的控件,有一些和 FMX 自己带到控件不一样的功能,可以通过 Skia4Delphi 自己带到例子代码去查看都有些什么新功能。

我的测试程序就是加上这个声明以后,让 FMX 原来的 TArc 在安卓上变正常了。

另外,还需要在 IDE 窗口右边的 Projects 窗口里面,选择这个工程的名字,鼠标右键下拉菜单里面,有一个 Enable Skia 的菜单(我通过 GetIt 安装的,可能它自动增加了这个菜单),选择这个菜单。

?

编译目标平台如果是安卓,选择上述菜单后,从 IDE 的 Project ->?Deployment 菜单出来的窗口里面,可以看到增加了两个 libsk4d.so 被添加到需要 delply 的文件列表里面了。如果没有这两个文件一起发布,则 APP 在手机上运行会闪退。这两个 libsk4d.so 来自安装后的 Skia4Delphi 的文件夹里面。

?关于 iOS,Skia4Delphi 的官方说法是支持 iOS 的。下载的 Skia4Delphi 的文件夹底下,也有 iOS 的 库。但是,在 Delphi 10.4.2 里面把程序的编译目标设置为 iOS 然后 Build 会弹出 Skia4Delphi 不支持当前这个 Delphi 版本的警告窗口,编译失败。不知道最新版的 Delphi 11 是不是解决了这个问题。当然,在 iOS 底下,可以使用苹果官方的图形库 Metal,在上述 GlobalUseSkia 的那行代码的位置,写成 GlobalUseMetal := True 我猜应该可以解决 FMX 自己的画图算法有问题的 BUG,在 iOS 底下是否可以解决圆弧不圆滑的问题,没有测试。

One More Thing

Skia4Delphi 这个项目自己带到例子,在 \Ski4Delphi\Samples\Demo\FMX\Projects 底下,它的例子程序在 Win32 和 Android 底下我编译运行成功。看这个例子的源代码,其代码框架非常有意思,值得仔细分析和学习。下次有时间写一下这个代码框架的有意思之处。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:51:32  更:2022-05-18 17:53:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 8:48:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计