Share via


.NET MAUI で SkiaSharp コードを再利用する

SkiaSharp は、2D ベクター グラフィックス、ビットマップ、テキストを描画する .NET および C# 用の 2D グラフィックス システムです。 Google 製品で広く使用されているオープンソースの Skia グラフィックス エンジンを搭載しています。 Xamarin.Forms アプリの SkiaSharp コードは、.NET マルチプラットフォーム アプリ UI (.NET MAUI) アプリで、いくつかのマイナーな更新で再利用できます。

Xamarin.Forms アプリの SkiaSharp コードを .NET MAUI アプリで再利用するには、次の手順を実行する必要があります。

  • プロジェクトから Xamarin.Forms SkiaSharp NuGet パッケージを削除し、.NET MAUI SkiaSharp NuGet パッケージをプロジェクトに追加します。
  • 名前空間を更新します。
  • SkiaSharp を初期化します。

NuGet の追加

SkiaSharp for .NET MAUI は、一連の NuGet パッケージとしてパッケージ化されています。 Xamarin.Forms アプリを .NET MAUI アプリに移行したら、既存のすべての SkiaSharp NuGet パッケージをアプリから削除する必要があります。 次に、NuGet パッケージ マネージャーを使用して SkiaSharp.Views.Maui.Controls NuGet パッケージを検索し、プロジェクトに追加します。 これにより、依存する SkiaSharp パッケージもインストールされます。

名前空間を更新する

SkiaSharp を使用する Xamarin.Forms アプリでは、通常、名前空間と名前空間の型がSkiaSharpSkiaSharp.Views.Forms使用されます。 SkiaSharp for .NET MAUI では、名前空間を引き続き使用SkiaSharpしますが、名前空間にあったSkiaSharp.Views.Forms型は名前空間にSkiaSharp.Views.Maui.Controls移動SkiaSharp.Views.Mauiしました。

次の表は、.NET MAUI アプリで SkiaSharp コードをビルドするために使用する必要がある名前空間を示しています。

.NET MAUI 名前空間 詳細
SkiaSharp SkiaSharp のすべてのクラス、構造体、および列挙型が含まれます。
SkiaSharp.Views.Maui タッチ操作とイベント引数をサポートする型が含まれています。
SkiaSharp.Views.Maui.Controls SKCanvasView.NET MAUI View クラスから派生し、SkiaSharp グラフィックス出力をホストするクラスが含まれています。 また、さまざまな ImageSource クラスも含まれています。
SkiaSharp.Views.Maui.Controls.Hosting UseSkiaSharp.NET MAUI アプリで SkiaSharp を初期化するために使用されるメソッドが含まれています。 詳細については、「SkiaSharp の初期化」を参照してください

SkiaSharp の初期化

クラス内のオブジェクトのメソッドMauiAppBuilderを呼び出UseSkiaSharpして、アプリで SkiaSharp をMauiProgram初期化します。

using Microsoft.Extensions.Logging;
using SkiaSharp.Views.Maui.Controls.Hosting;

namespace MyMauiApp;

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

Note

メソッドを UseSkiaSharp 呼び出すには、名前空間のディレクティブを using 追加する SkiaSharp.Views.Maui.Controls.Hosting 必要があります。