在 .NET MAUI 中重複使用 SkiaSharp 程式代碼
SkiaSharp 是適用於 .NET 和 C# 的 2D 圖形系統,可繪製 2D 向量圖形、位圖和文字。 它由開放原始碼的Skia圖形引擎提供,在Google產品中廣泛使用。 您可以在 .NET 多平臺應用程式 UI (.NET MAUI) 應用程式中重複使用來自 Xamarin.Forms 應用程式的 SkiaSharp 程式代碼,但有一些次要更新。
若要在 .NET MAUI 應用程式中從 Xamarin.Forms 應用程式重複使用您的 SkiaSharp 程式代碼,您必須:
- 從專案移除 Xamarin.Forms SkiaSharp NuGet 套件,並將 .NET MAUI SkiaSharp NuGet 套件新增至您的專案。
- 更新命名空間。
- 初始化 SkiaSharp。
新增 NuGet
適用於 .NET MAUI 的 SkiaSharp 會封裝為一系列 NuGet 套件。 將 Xamarin.Forms 應用程式移轉至 .NET MAUI 應用程式之後,您應該從您的應用程式中移除所有現有的 SkiaSharp NuGet 套件。 然後,使用 NuGet 套件管理員來搜尋 SkiaSharp.Views.Maui.Controls NuGet 套件,並將其新增至您的專案。 這也會安裝相依的SkiaSharp套件。
更新命名空間
使用 SkiaSharp 的 Xamarin.Forms 應用程式通常會使用命名空間和命名空間中的SkiaSharpSkiaSharp.Views.Forms類型。 在適用於 .NET MAUI 的 SkiaSharp.Views.Forms SkiaSharp 中,您將繼續使用 命名空間,SkiaSharp但命名空間中的類型已移至 SkiaSharp.Views.Maui 和 SkiaSharp.Views.Maui.Controls 命名空間。
下表顯示您需要用來在 .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
在應用程式中呼叫 物件MauiProgram
上的 MauiAppBuilder 方法,以在應用程式中UseSkiaSharp初始化 SkiaSharp:
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
指示詞。