Загрузка шрифта в Skiasharp - PullRequest
0 голосов
/ 23 мая 2018

Как использовать пользовательский шрифт в Skiasharp из форм Xamarin

Я пробовал

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

и

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

Но оба не сработали.Нужно ли мне получить доступ к пути шрифта с помощью службы зависимостей?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Если вы хотите полностью мультиплатформенное решение, поместите весь код рисования SkiaSharp / PaintCode в стандартную библиотеку .NET, включая шрифты как встроенный ресурс (не забудьте установить действие Build для встроенного ресурса!).Затем вы можете получить объект 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, когда они больше не нужны.

Для оптимизации производительности это хорошокэшировать объекты SKTypeface для оптимизации скорости в словаре.

Когда вы помещаете весь свой код рисования в стандартную библиотеку .NET, вы можете легко тестировать / разрабатывать в проекте Windows Desktop WPF, когда все компилируется очень быстро и когда выготовы, затем используйте его в мобильном приложении.

0 голосов
/ 23 мая 2018

Мы должны добавить UIAppFonts в info.plist для iOS

<key>UIAppFonts</key>
<array>
    <string>CoText_Bd.otf</string>
</array>

Для Android попробуйте

CoText_Bd.otf#CoText_Bd
...