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);