Skip to content

Rendering, how it draws fast

Ambit.Avalonia draws straight to Skia. No per-shape controls, just one ICustomDrawOperation per overlay.

csharp
var lease = context.TryGetFeature<ISkiaSharpApiLeaseFeature>().Lease();
var canvas = lease.SkCanvas;
_renderer.Render(canvas, regions, state, transform);

Why it's fast

  • Paints and paths are created once and reused, no new allocations each frame
  • UpdateRegions() diffs first, only redraws when something changed
  • Good for 20+ tiles at once

Where points go

ICoordinateTransform converts between your 0..1 points and screen pixels:

csharp
public interface ICoordinateTransform
{
    ControlPoint ToControlSpace(NormalizedPoint p);
    NormalizedPoint ToNormalizedSpace(ControlPoint p);
}

AmbitViewer implements this and handles pan, zoom, and letterboxing for you.

Released under the MIT License.