Skia4Delphi - RAD Studio

提供: RAD Studio
移動先: 案内検索

サード パーティ製ソフトウェア アドイン への移動


Skia4Delphi は、 Google の Skia グラフィック ライブラリに基づく、Delphi および C++Builder 用のクロスプラットフォーム 2D グラフィック API です。 モバイル、サーバー、デスクトップ モデルでイメージをレンダリングするために使用できる包括的な 2D API を提供し、すべての RAD Studio フレームワーク(コンソール、FMX、VCL)およびプラットフォームと互換性があります。

OpenGL、Vulkan、DirectX、Metal などの背後で使用される低レベル ライブラリの実装の複雑さを抽象化し、最適化と新機能を実装することで、共通の 2D API を提供します。

ライブラリはすべてのフレームワークと互換性がありますが、一部の機能は独自のものです:

機能セット コンソール VCL FMX 説明

Skia API

Checkmark.svg
Checkmark.svg
Checkmark.svg

単一のユニットを介してピュア Skia ライブラリにアクセスします: System.Skia.pas(または System.Skia.hpp)

コントロール

Checkmark.svg
Checkmark.svg

TSkAnimatedImage、TSkLabel、TSkPaintBox、TSkSvg

アプリのレンダリング

Checkmark.svg

FMX グラフィック エンジンを Skia に置き換え

Skia を有効にする

Skia の機能やユニットを使用する前に、プロジェクトで Skia を使用できるようにする必要があります。これを行うには、RAD Studio でプロジェクトを開き、プロジェクトを右クリックして[Skia を有効にする]をクリックします:

EnablingSkia.png

この有効化はアプリケーションに対してのみ行われます。Skia を使用するパッケージではこれを有効にする必要はありません。

この手順では、ライブラリ バイナリのプロジェクトへのリンクと配置を、自動的に設定します。Skia を有効にせずにそのユニットを使用すると、アプリケーションの起動時に問題が発生します。

主な機能

機能 詳細

2D 描画

図形、パス、テキスト

SVG

レンダリングと作成

画像デコーダ

BMP、GIF、ICO、JPG、PNG、WBMP、WEBP および RAW 画像

画像エンコーダ

PNG、JPG、WEBP

アニメーション プレーヤ

Lottie、Telegram Stickers、アニメーション GIF、アニメーション WEBP

アンチエイリアス

高品質描画、なめらかエッジ

フォント

フォントの太さ、ファミリ フォールバック、カスタム フォント(インストールなし)、合字

テキスト

複数のスタイル、最大行数、行間隔、両端揃えテキスト、テキスト アウトライン、グラデーション、装飾

右から左へ読む言語

ペルシア語、アラビア語、ヘブライ語などのテキストのレンダリング

PDF

ベクトル化された PDF の生成

Unicode

グラフィム パーサー

フィルタ

色、マスク、画像フィルタ

切り抜き

高度な切り抜き操作(パスやシェーダなど)の多くをサポート

グラデーション

線状、放射状、スイープ、円錐状のグラデーション

シェーダ

単一のシェーダ言語(SkSL)を介して、GPU 上で特定の描画を直接実行するシェーダの作成

コントロール

Skia ライブラリ インテグレーションには、特殊なネイティブ コントロールとコンポーネントがあり、Skia が有効化されターゲット プラットフォームに配置されている場合にのみ利用可能になります。

TSkAnimatedImage

TSkAnimatedImage は、アニメーション画像(ベクタ アニメーションを含む)の読み込みやレンダリングを、非常にシンプルな方法で行うコントロールです。サポートされている形式は次のとおりです:

形式 拡張子

Lottie ファイル

.json、.lottie

Telegram Sticker

.tgs

アニメーション GIF

.gif

アニメーション WebP

.webp

コントロールをフォームに追加し、ダブルクリックすると、アニメーション ファイルを読み込むウィンドウが開きます。

もっと詳しく…

TSkLabel

TSkLabel は、Skia でサポートされる新機能の TLabel ではサポートされていなかったか、実装が困難だった次のような機能を実装するものです:

  • フォント ファミリ(CSS でのようなフォント フォールバック リスト)
  • フォントの太さ
  • フォントの傾斜
  • テキスト内の複数のスタイルのサポート
  • BiDi のサポート(右から左読み)
  • 水平方向の位置揃えのサポート
  • カスタム フォントのサポート(フォントをイントールせず)
  • テキストの一部の背景色のサポート
  • 最大行数の制限
  • 自動サイズ オプション(幅や高さ)
  • 高度な装飾(波線の下線、上線、破線など)、およびその他

もっと詳しく…

TSkPaintBox & TSkAnimatedPaintBox

TSkPaintBox は、OnDraw イベントを使用して、Skia API を使用して画面上に直接ペイントするための理想的なコントロールです。

procedure TForm1.SkPaintBox1Draw(ASender: TObject; const ACanvas: ISkCanvas;
   const ADest: TRectF; const AOpacity: Single);
 begin
   var LPaint: ISkPaint := TSkPaint.Create;
   LPaint.Shader := TSkShader.MakeGradientSweep(ADest.CenterPoint,
     [$FFFCE68D, $FFF7CAA5, $FF2EBBC1, $FFFCE68D]);
   ACanvas.DrawPaint(LPaint);
 end;

TSkAnimatedPaintBox は TSkPaintBox コントロールのバリアントであり、アニメーションの継続時間を設定し、OnAnimationDraw イベントを通じて Skia API を使用してこのアニメーションの進行状況を描画できるようにします。

TSkSVG

TSkSvg は、SVG を容易に表示するためのコントロールです。

コントロールをフォームに追加し、ダブルクリックすると、SVG ファイルを読み込むウィンドウが開きます。

Svg.OverrideColor プロパティを使用することで、表示色を変更することができます。

もっと詳しく…

新しい画像コーデック

プロジェクトで Skia を有効にした後、Skia がサポートする新しい画像コーデックが自動的にフレームワークに登録されます。その後、FMX の TBitmap または VCL の TPicture[*] が、WebP といった新しい画像形式を直接読み込み/保存できるようになります。WebP とは、jpg や png の 30% 以上の圧縮を、同じ品質で行う最新のイメージ形式です。
メモ: VCL では、プロジェクトで Vcl.Skia ユニットを宣言する必要があります。

アプリのレンダリング

任意で、デフォルトの Canvas を FMX から Canvas をベースとした Skia に置き換えることができます。この機能が一度有効になると、すべての FMX コントロールは Skia ベースの実装を使用して自動的にペイントされます。 これにより、ライブラリ全体と共に、FMX(主にモバイル)の描画のパフォーマンスと品質を向上させることができます。

Skia を利用したアプリのレンダリングの有効化

Skia を利用したアプリのレンダリングを有効にするには、initialization セクションで、グローバル変数 FMX.Skia.GlobalUseSkiatrue に設定します。例を見てみましょう:

uses
  System.StartUpCopy,
  FMX.Forms,
  FMX.Skia,
  Unit1 in 'Unit1.pas' {Form1};
 
{$R *.res}
 
begin
  GlobalUseSkia := True;
  Application.Initialize;
  ...
メモ:
  1. この設定を、Metal の有効化(FMX.Types.GlobalUseMetaltrue にする)と組み合わせることができます(推奨されます)。この組み合わせは、Skia を使用した Metal 実装をアクティベートし、iOS および macOS においてパフォーマンスをむしろ向上させるためです。
  2. コントロールといったその他のライブラリ機能は、このオプションの有効化の有無に限らず動作します。
  3. この有効化は、3D フォームに影響はありません。

もっと詳しく…

描画品質の向上

有効化された Skia を利用したアプリのレンダリングは、描画においてアンチエイリアスが使用されるため、品質が自動的に向上されます(特にモバイル上で)。

アンチエイリアスなし アンチエイリアスあり

AntiAliasing (without).png

AntiAliasing (with).png

しかし、フォームのレンダリング品質は、よりよいレンダリングやよりよいパフォーマンスを選択することことで、なお詳細調整することができます。これを行うには、フォームの Quality プロパティをシンプルに変更してください。

違い

Skia または GPU ドライバを使用した場合、すべての出力が同じになるわけではありません。既知の違いは次のとおりです:

  • Skia は TTextTrimming.Character をサポートしていないため、ライブラリではこのオプションを TTextTrimming.Word として扱います。言い換えると、Skia は「...」のトリミングを追加するために単語の半分をトリミングすることができないため、FMX マッピングでは単語全体をトリミングすることを選択しています。

デモ

Skia デモ FMX - RAD Studio

これは次の場所にあります:

  • Object Pascal\Multi-Device Samples\Skia4Delphi
  • CPP\Multi-Device Samples\Skia4Delphi

Skia デモ VCL - RAD Studio

これは次の場所にあります:

  • Object Pascal\VCL\Skia4Delphi
  • CPP\VCL\Skia4Delphi

関連項目


サンプル