在 .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 中,将继续使用该SkiaSharp命名空间,但命名空间中的SkiaSharp.Views.Forms类型已移动到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 的方法。 有关详细信息,请参阅 Initialize SkiaSharp。 |
初始化 SkiaSharp
通过在类中的对象上MauiAppBuilder调用UseSkiaSharp方法,在应用中MauiProgram
初始化 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
。