Graphics, Skia and Multimedia
38.1 Skia4Delphi (Integrated in Delphi 12)
Skia: Google's 2D graphics library (as used by Chrome and Flutter), integrated into RAD Studio 12+ for VCL and FMX.
Features: high-quality vector drawing, SVG rendering (TSkSvg), Lottie animations (TSkAnimatedImage), advanced text (TSkLabel with mixed formatting), image codecs (WebP, AVIF), PDF generation, and a GPU-accelerated FMX canvas (GlobalUseSkia := True in the .dpr).
uses System.Skia, Vcl.Skia;
procedure TMainForm.SkPaintBox1Draw(ASender: TObject; const ACanvas: ISkCanvas; const ADest: TRectF; const AOpacity: Single);
begin
var Paint: ISkPaint := TSkPaint.Create;
Paint.AntiAlias := True;
Paint.Color := TAlphaColors.Royalblue;
ACanvas.DrawCircle(ADest.CenterPoint, 80, Paint);
Paint.Color := TAlphaColors.Black;
ACanvas.DrawSimpleText('Skia in Delphi', 20, 30, TSkFont.Create(nil, 24), Paint);
end;38.2 FMX Graphics, Animation and 3D
3D: TForm3D, TViewport3D, primitives, TModel3D (OBJ/FBX/DAE import), lights, cameras, materials.
Multimedia: TMediaPlayer (audio/video), TCameraComponent, TAudioCaptureDevice, bitmap manipulation (TBitmap.Map for pixel access), image formats (PNG, JPEG, BMP, GIF, plus WebP/AVIF via Skia).
Games: FMX + Skia, Castle Game Engine (Object Pascal, supports Delphi), Box2D wrappers, Delphi + OpenGL/Vulkan headers.
// Canvas drawing in FMX (OnPaint of a TPaintBox)
Canvas.Fill.Color := TAlphaColors.Orange;
Canvas.FillEllipse(RectF(10, 10, 110, 110), 1.0);
Canvas.Stroke.Thickness := 2;
Canvas.DrawLine(PointF(0, 0), PointF(200, 200), 1.0);
// Animation in code
TAnimator.AnimateFloat(Rectangle1, 'Position.X', 300, 1.0, TAnimationType.InOut, TInterpolationType.Quadratic);
TAnimator.AnimateFloat(Rectangle1, 'RotationAngle', 360, 2.0);