Поделиться через


Повторное использование кода SkiaSharp в .NET MAUI

SkiaSharp — это 2D-графическая система для .NET и C#, которая рисует 2D-векторную графику, растровые изображения и текст. Он работает с графическим двигателем с открытым исходным кодом Skia, который широко используется в продуктах Google. Вы можете повторно использовать код SkiaSharp из приложений Xamarin.Forms в приложениях многоплатформенного пользовательского интерфейса приложений .NET (.NET MAUI) с некоторыми незначительными обновлениями.

Чтобы повторно использовать код SkiaSharp из приложения Xamarin.Forms в приложении .NET MAUI, необходимо:

  • Удалите пакеты NuGet Xamarin.Forms SkiaSharp из проекта и добавьте в проект пакеты NuGet .NET MAUI SkiaSharp.
  • Обновление пространств имен.
  • Инициализация SkiaSharp.

Добавление NuGets

SkiaSharp для .NET MAUI упакована в виде ряда пакетов NuGet. После переноса приложения Xamarin.Forms в приложение .NET MAUI необходимо удалить все существующие пакеты NuGet SkiaSharp из приложения. Затем используйте диспетчер пакетов NuGet для поиска пакета SkiaSharp.Views.Maui.Controls NuGet и добавьте его в проект. Это также установит зависимые пакеты SkiaSharp.

Обновление пространств имен

Приложения Xamarin.Forms, использующие SkiaSharp, обычно используют типы из SkiaSharp пространства имен и SkiaSharp.Views.Forms пространства имен. В SkiaSharp для .NET MAUI вы продолжите использовать SkiaSharp пространство имен, но типы, которые были в пространстве имен, перемещены в SkiaSharp.Views.FormsSkiaSharp.Views.Maui пространства имен и SkiaSharp.Views.Maui.Controls пространства имен.

В следующей таблице показаны пространства имен, которые необходимо использовать для создания кода SkiaSharp в приложении .NET MAUI:

Пространство имен .NET MAUI Сведения
SkiaSharp Содержит все классы, структуры и перечисления SkiaSharp.
SkiaSharp.Views.Maui Содержит типы для поддержки сенсорного взаимодействия и аргументов событий.
SkiaSharp.Views.Maui.Controls Содержит SKCanvasView класс, производный от класса MAUI View .NET, и размещает выходные данные графики SkiaSharp. Также содержит различные ImageSource классы.
SkiaSharp.Views.Maui.Controls.Hosting Содержит UseSkiaSharp метод, используемый для инициализации SkiaSharp в приложении .NET MAUI. Дополнительные сведения см. в разделе Initialize SkiaSharp.

Инициализация SkiaSharp

Инициализировать SkiaSharp в приложении, вызвав UseSkiaSharp метод объекта MauiAppBuilder в 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();
    }
}

Примечание.

UseSkiaSharp Вызов метода требует добавления using директивы для SkiaSharp.Views.Maui.Controls.Hosting пространства имен.