Setup
Introduction
This page shows how to set up Gum to be used in a Maui app using SkiaSharp. This page assumes that you have a functional Maui app.
Adding Gum NuGet Package
Open your Maui project in your preferred IDE
Add the
Gum.SkiaSharp.Maui
NuGet package. Note that this also adds SkiaSharp to your project.Add Gum.SkiaSharp.Maui NuGet package
Initializing SkiaSharp
If you haven't already set up SkiaSharp for your project, add .UseSkiaSharp()
to your Builder. For more information see the SkiaSharp setup: https://learn.microsoft.com/en-us/samples/dotnet/maui-samples/skiasharpmaui-demos/
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
+ .UseSkiaSharp()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
#if DEBUG
builder.Logging.AddDebug();
#endif
return builder.Build();
}
}
Adding a SkiaGumCanvasView
You can add SkiaGumCanvasView instances to any page or component. SkiaGumCanvasView is a view which inherits from SKCanvasView, but allows adding of Gum runtime elements. To add a SkiaGumCanvasView:
Open the .xaml file for an existing view or component
Add the following namespace to your page or view:
xmlns:SkiaGum="clr-namespace:SkiaGum.Maui;assembly=SkiaGum.Maui"
Add the following to a container, such as to a Grid. Note that the xaml specifies a Name so that code-behind can access the canvas to add objects to it:
<SkiaGum:SkiaGumCanvasView WidthRequest="200" HeightRequest="200" x:Name="SkiaGumCanvasView"/>
Add the following in your C# (code-behind) for the given page or component, such as in the page's constructor:
public MainPage() { InitializeComponent(); // Creates a circle: + var circle = new ColoredCircleRuntime(); + circle.Color = SKColors.Red; + circle.Width = 400; + circle.Height = 400; + // Adds it so it is drawn + SkiaGumCanvasView.AddChild(circle); + // Tells the canvas to refresh itself, so the circle appears + SkiaGumCanvasView.InvalidateSurface(); }
Add the following to your C# (code-behind) to dispose all cached paints when navigating away from the page:
protected override void OnNavigatedFrom(NavigatedFromEventArgs args) { base.OnNavigatedFrom(args); + SkiaGumCanvasView.Dispose(); }
You should now have a red circle on screen.

Last updated
Was this helpful?