最新的RAD Studio/ C++Builder 12 在C++和整个IDE中提供了完全集成的Skia图形库支持。 Skia是一个开源图形库,为各种硬件和软件平台提供支持。 Skia由谷歌赞助和管理,但根据BSD自由软件许可证,任何人都可以使用。 Skia提供平滑的2D图形,可以有效地使用GPU。 在这篇文章中,我们解释了如何在C++Builder中使用Skia。
什么是现代C++中的Skia?
斯基亚 是一个开源图形库,提供对各种硬件和软件平台的支持。 Skia由谷歌赞助和管理,但根据BSD自由软件许可证,任何人都可以使用。 主要为谷歌Chrome和ChromeOS、Android、Flutter、Mozilla Firefox和Firefox OS以及许多其他产品设计。 核心组件由Skia开发团队完成,但他们考虑来自任何来源的贡献。
如何在C++Builder 12项目代码中使用Skia?
首先,您需要C++Builder 12.1,或者需要在C++Builder 11.x上安装Skia4Delphi组件。Skia是RAD Studio/C++Builder 121的一个新的2D渲染功能。 它随Skia一起提供。 包裹。 FMX,滑雪。 包裹。 RTL、Skia。 包裹。 VCL。 正式打包库。
如果您想在C++Builder应用程序中使用Skia,则需要下载最新的RAD Studio/C++Builder。 然后创建一个新的C++Builder FMX应用程序或VCL应用程序,或者打开您的项目,您只需要在C++Builder的project窗口中右键单击您的项目即可启用Skia。 您不需要安装任何第三方组件,在RAD Studio 12.1版本之后,它完全包含在内置库中。
除了如上所述启用Skia外,建议添加 FMX公司。 滑雪.hpp
标题到您的 项目.cpp
如下所示。
建议设置为true GlobalUseSkia公司
, GlobalUseVulkan公司
并设置为false 可用时全局使用SkiaRaster
您的旗帜 项目.cpp
就像这样:
GlobalUseSkia公司 = 真的 ;
GlobalUseVulkan公司 = 真的 ;
可用时全局使用SkiaRaster = 假 ;
在C++Builder 12中有一个简单的Skia示例吗?
现在,我们可以回到我们的表单来使用Skia图形。 让我们使用它惊人的着色器功能来创建渐变背景。 为此,请遵循以下步骤。
1.从托盘窗口拖动TSkPainBox组件
2.选择SkPainBox1,在左侧的Object Inspector中,转到Events选项卡,双击OnDraw()事件,
这将在头中声明的代码中创建OnDraw()事件过程。
3.按照下面的示例修改内部,
汽车 L油漆 = SkPaint公司 ( ) ; //创建新的Skia Paint
//使用Skia Shader绘制渐变
L油漆 -> 着色器 = TSk着色器 :: 生成渐变扫描 ( AD测试 . 中心点 ( ) , { 0xFF00265D型 , 0xFFC7CAA5 , 0xFF00265D型 , 0xFF2EBBC1 , 0xFF00265D型 } ) ;
ACanvas公司 -> DrawPaint绘制 ( L油漆 ) ; //将创建的绘画绘制到此PaintBox的ACanvas
更安全的是,对于任何图形问题,我们都可以保存画布状态,并且可以使用 尝试{}
和 __最后{}
如下所示。
ACanvas公司 -> 保存 ( ) ; //保存此PaintBox的当前画布状态
尝试
{
汽车 L油漆 = SkPaint公司 ( ) ; //创建新的Skia Paint
//使用Skia Shader绘制渐变
L油漆 -> 着色器 = TSk着色器 :: 生成渐变扫描 ( AD测试 . 中心点 ( ) , { 0xFF00265D型 , 0xFFC7CAA5 , 0xFF00265D型 , 0xFF2EBBC1 , 0xFF00265D型 } ) ;
ACanvas公司 -> DrawPaint绘制 ( L油漆 ) ; //将创建的绘画绘制到此PaintBox的ACanvas
}
__最后 {
ACanvas公司 -> 恢复 ( ) ; //如果无法尝试绘制,则恢复到保存状态
} ;
然后运行应用程序,结果如下:
有在C++Builder 12中如何使用Skia的完整示例吗?
下面是这个简单Skia示例的完整代码,该示例使用GPU的Shaders绘制渐变。 非常简单,令人惊叹!
1
2
三
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#包括<fmx.h>
#pragma hdrstop
#包括“Skia_Simple_Gradient_Shader_Unit1.h”
//---------------------------------------------------------------------------
#pragma包(smart_init)
#杂注资源“*.fmx”
T形1 * 表格1 ;
//---------------------------------------------------------------------------
__快速呼叫 T形1 :: T形1 ( T组件 * 所有者 )
: T表格 ( 所有者 )
{
}
//---------------------------------------------------------------------------
空隙 __快速呼叫 T形1 :: SkPaintBox1绘图 ( TObject(目标) * A投标人 , ISk画布 * 常量 ACanvas公司 , 常量 TRectF公司 &AD测试 , 常量 浮动 A容量 )
{
ACanvas公司 -> 保存 ( ) ; //保存此PaintBox的当前画布状态
尝试
{
汽车 L油漆 = SkPaint公司 ( ) ; //创建新的Skia Paint
//使用Skia Shader绘制渐变
L油漆 -> 着色器 = TSk着色器 :: 生成渐变扫描 ( AD测试 . 中心点 ( ) , { 0xFF00265D型 , 0xFFC7CAA5 , 0xFF00265D型 , 0xFF2EBBC1 , 0xFF00265D型 } ) ;
ACanvas公司 -> DrawPaint绘制 ( L油漆 ) ; //将创建的绘画绘制到此PaintBox的ACanvas
}
__最后 {
ACanvas公司 -> 恢复 ( ) ; //如果无法尝试绘制,则恢复到保存状态
} ;
}
如果您想查看更多示例,请安装最新的 RAD工作室/C++Builder 12.1 完整版或试用版,并在Samples文件夹中检查此示例: C: \Users\Public\Documents\Embarcadero\Studio\23.0\Samples\CPP\Multi-Device Samples\Skia4Delphi
项目。 它有许多运行不同Skia图形示例的示例。
C++生成器 是在Windows操作系统上构建简单或专业应用程序的最简单、最快的C和C++编译器和IDE。 对于初学者来说,它也很容易学习,它有广泛的示例、教程、帮助文件和对代码的LSP支持。 RAD Studio的C++Builder版本为高性能原生Windows应用程序提供了屡获殊荣的VCL框架,并为UI提供了功能强大的FireMonkey(FMX)框架。
有一个免费的C++Builder社区版,面向学生、初学者和初创公司; 可以从以下网址下载 在这里 。对于专业开发人员,有专业版、架构师版或企业版的C++Builder,也有试用版可从下载 在这里 .