Skia4Delphi - RAD Studio
Remonter à Add-ins logiciels tiers
Skia4Delphi est une API graphique 2D multiplate-forme pour Delphi et C++Builder basée sur la bibliothèque graphique Skia de Google. Elle fournit une API 2D complète pour restituer les images sur les plates-formes supportées (mobile, bureau et serveur). Elle est compatible avec tous les frameworks (Console, FMX et VCL) et plates-formes RAD Studio.
Elle fournit des API 2D communes en effectuant l'abstraction des complexités dans l'implémentation des bibliothèques de bas niveau utilisées en arrière-plan, comme OpenGL, Vulkan, DirectX, Metal, entre autres, en implémentant des optimisations et de nouvelles fonctionnalités.
Même si la bibliothèque est compatible avec tous les frameworks, certaines fonctionnalités sont uniques :
Sommaire
Activation de Skia
Avant d'utiliser une fonctionnalité ou une unité Skia, vous devez activer votre projet pour qu'il puisse utiliser Skia. Pour ce faire, ouvrez votre projet dans RAD Studio, cliquez avec le bouton droit sur votre projet et cliquez sur Activer Skia :
Cette activation ne concerne que les applications. Les packages qui utilisent Skia ne sont pas concernés.
Cette étape configure automatiquement les liens et les déploiements des binaires de la bibliothèque vers le projet. Si vous n'activez pas Skia et n'utilisez pas ses unités, votre application rencontrera des problèmes au démarrage.
Principales fonctionnalités
Fonctionnalité | Détails |
---|---|
Dessins 2D |
Formes, chemins et textes |
SVG |
Rendu et création |
Décodeurs d'images |
BMP, GIF, ICO, JPG, PNG, WBMP, WEBP et images brutes |
Encodeurs d'images |
PNG, JPG et WEBP |
Lecteur d'animations |
Animations Lottie, autocollants Telegram, fichiers GIF et WEBP animés |
Anticrénelage |
Haute qualité de dessin, sans bords irréguliers |
Fonte |
Poids de fonte, listes alternatives de familles de fonte, fonte personnalisée (sans installation), ligature |
Texte |
Plusieurs styles, lignes maximales, espacement entre les lignes, texte centré, arborescence, dégradé, décorations |
Langues de droite à gauche |
Rendu des textes en Perse, Arabe, Hébreu, etc. |
|
Génération de PDF vectorisés |
Unicode |
Analyseur de graphèmes |
Filtres |
Filtres de couleurs, de masques et d'images |
Délimitations |
Prise en charge de nombreuses opérations de délimitation comme les chemins et les shaders |
Dégradés |
Dégradé linéaire, radial, de nettoyage et conique |
Shader |
Création de shaders pour exécuter des dessins spécifiques directement sur le GPU, via un SkSL (single shader language) |
Contrôles
L'intégration de la bibliothèque Skia offre aussi de nouveaux contrôles et composants natifs spécifiques. Ces contrôles sont uniquement disponibles si Skia est activée et déployée sur la plate-forme cible.
TSkAnimatedImage
TSkAnimatedImage est le contrôle qui fournit une manière très simple de charger et de restituer les images animées, y compris les animations vectorielles. Les formats suivant sont pris en charge :
Format | Extension |
---|---|
Fichier Lottie |
.json, .lottie |
Autocollant Telegram |
.tgs |
GIF animé |
.gif |
WebP animé |
.webp |
Ajoutez le contrôle à la fiche. Un double-clic sur ce contrôle ouvrira la fenêtre permettant de charger le fichier d'animation.
TSkLabel
TSkLabel implémente de nouvelles fonctionnalités qui n'étaient pas prises en charge par TLabel ou étaient difficiles à implémenter, comme :
- Familles de fonte ; (liste alternative de fontes comme dans css)
- Poids de fonte ;
- Slant de fonte ;
- Prise en charge de plusieurs styles dans le texte ;
- Prise en charge de BiDi ; (de droite à gauche) :
- Prise en charge de l'alignement horizontal ;
- Prise en charge de fontes personnalisées ; (sans installation de la fonte) ;
- Prise en charge de la couleur d'arrière-plan sur certaines parties du texte ;
- Limite le nombre maximal de lignes ;
- Option de dimensionnement automatique ; (largeur et hauteur)
- Décorations avancées ; (comme soulignement ondulé, barré, ligne de tirets, etc.) et bien d'autres encore...
TSkPaintBox & TSkAnimatedPaintBox
TSkPaintBox est le contrôle idéal pour dessiner avec des API Skia directement à l'écran avec l'événement OnDraw :
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 est une variante du contrôle TSkPaintBox qui permet de définir la durée d'une animation et de dessiner la progression de cette animation à l'aide de l'API Skia par le biais de l'événement OnAnimationDraw.
TSkSVG
TSkSvg est le contrôle permettant l'affichage facile des SVG.
Ajoutez le contrôle à la fiche. Un double-clic sur ce contrôle ouvrira la fenêtre permettant de charger le fichier SVG.
L'utilisation de la propriété Svg.OverrideColor permet de changer la couleur d'affichage.
Nouveaux codecs d'image
Après avoir activé Skia dans le projet, les nouveaux codecs d'image pris en charge par Skia sont automatiquement recensés dans le framework. Le TBitmap de l'application FMX ou le TPicture[*] de l'application VCL pourra ensuite charger et enregistrer directement de nouveaux formats d'image comme WebP, qui est un format d'image moderne 30 % plus compressé que les fichiers jpg et png, avec la même qualité.
Rendu des applications
Vous pouvez également remplacer le canevas par défaut provenant de FMX par un canevas basé sur Skia. Une fois cette fonctionnalité activée, tous les contrôles FMX seront automatiquement dessinés en utilisant l'implémentation basée sur Skia. Cela améliore les performances et la qualité des dessins pour la FMX (principalement sur les plates-formes mobiles) et l'intégralité de la bibliothèque.
Activation du rendu des applications en utilisant Skia
Pour activer le rendu des applications en utilisant Skia, il vous suffit de définir la variable globale FMX.Skia.GlobalUseSkia sur true
dans la section initialization. Voici un exemple :
uses
System.StartUpCopy,
FMX.Forms,
FMX.Skia,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
GlobalUseSkia := True;
Application.Initialize;
...
- Il est possible (et recommandé) de combiner ce paramètre avec l'activation de Metal (FMX.Types.GlobalUseMetal défini sur
true
) pour améliorer encore les performances sur iOS et macOS, car cette combinaison active l'implémentation de Metal avec Skia. - Les autres fonctionnalités de la bibliothèque, comme les contrôles, fonctionnent que cette option soit ou non activée.
- Cette activation n'a pas d'effet sur les fiches 3D.
Qualité améliorée des dessins
Lorsque vous activez l'utilisation de Skia pour le rendu des applications, l'amélioration du rendu s'effectue automatiquement (en particulier sur un périphérique mobile), car l'anticrénelage est utilisé dans les dessins :
Sans anticrénelage | Avec anticrénelage |
---|---|
Toutefois, il est encore possible d'optimiser la qualité du rendu de votre fiche, en choisissant un meilleur rendu ou de meilleures performances. Pour ce faire, il vous suffit de modifier la propriété Quality de la fiche.
Différences
Les résultats obtenus sont légèrement différents selon que vous utilisez Skia ou le pilote GPU. Voici notamment l'une des principales différences :
- Comme Skia ne prend pas en charge TTextTrimming.Character, notre bibliothèque traite cette option comme TTextTrimming.Word. En d'autres termes, Skia ne pouvant pas tronquer la moitié d'un mot pour ajouter la troncature '...', le mappage FMX choisit de tronquer le mot entier.
Démos
Skia Demo FMX
Vous pouvez la trouver ici :
Object Pascal\Multi-Device Samples\Skia4Delphi
CPP\Multi-Device Samples\Skia4Delphi
Skia Demo VCL
Vous pouvez la trouver ici :
Object Pascal\VCL\Skia4Delphi
CPP\VCL\Skia4Delphi
Voir aussi
- Page d'accueil Skia4Delphi
- Page de développement Skia4Delphi
- Documentation Skia
- Skia4Delphi - Fonctionnalités exclusives de RAD Studio