如何在 Xamarin 表单的skiasharp 中使用自定义字体。

我试过了

paint.Typeface = SKTypeface.FromFamilyName("CoText_Bd");


paint.Typeface = SKTypeface.FromFile("CoText_Bd");

但两者都没有奏效。
我是否需要使用依赖服务访问字体的路径?

最佳答案

如果您想要真正的多平台解决方案,请将所有 SkiaSharp/PaintCode 绘图代码放入 .NET 标准库中,包括字体作为嵌入资源(不要忘记将构建操作设置为嵌入资源!)。然后你可以使用这个方法获取 SKTypeface 对象(Library ClassLibrary1,Folder Font):

    public static SKTypeface GetTypeface(string fullFontName)
    {
        SKTypeface result;

        var assembly = Assembly.GetExecutingAssembly();
        var stream = assembly.GetManifestResourceStream("ClassLibrary1.Font." + fullFontName);
        if (stream == null)
            return null;

        result = SKTypeface.FromStream(stream);
        return result;
    }
记住在不再需要 SKObject 时处理它们。
为了优化性能,最好在 Dictionary 中缓存 SKTypeface 对象以优化速度。
当您将所有绘图代码放入 .NET 标准库中时,您可以在 Windows 桌面 WPF 项目中轻松测试/开发,享受快速编译和构建,当您准备好时,然后在移动应用程序中使用它。

关于xamarin - 在skiasharp中加载字体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50494804/

10-10 15:27