Содержание
Многие элементы управления в .NET MAUI могут отображать какой-либо текст. Например, такие элементы как метки (Label
), кнопки (Button
), а также различные списки и коллекции могут содержать такие свойства для работы с текстом и шрифтами как Font
, Font
, Text
, Text
и другие. В этой части мы рассмотрим работу с этими другими свойствами элементов XAML, отвечающими за работу с текстом в .NET MAUI
Использование шрифтов в .NET MAUI
Все элементу управления в .NET MAUI, которые могут отображать какие-либо текстовые данные, содержат следующие свойства для работы со шрифтами:
Свойство | Тип | Описание |
FontFamily |
string |
Определяет семейство шрифтов |
FontAttributes |
FontAttributes |
Определяет атрибуты шрифта. Тип FontAttributes — это перечисление, содержащее три элемента: None , Bold (жирный шрифт) и Italic (курсив).Значение по умолчанию: None |
FontSize |
double |
Размер шрифта |
FontAutoScalingEnabled |
bool |
определяет, будет ли масштабироваться текст, в соответствии с параметрами, установленными в операционной системе. Значение по умолчанию этого свойства равно true . |
Чтобы продемонстрировать работу с этими свойствами, создадим новое приложение .NET MAUI и изменим содержимое страницы MainPage.xaml следующим образом:
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MauiApp6.MainPage"> <ScrollView> <VerticalStackLayout Padding="30,0" Spacing="25"> <Image Source="dotnet_bot.png" HeightRequest="185" Aspect="AspectFit" SemanticProperties.Description="dot net bot in a hovercraft number nine" /> <Label FontSize="30" FontAttributes="Italic" FontAutoScalingEnabled="True" Text="Привет, мир!" /> <Label FontSize="24" FontAttributes="Bold,Italic" FontAutoScalingEnabled="True" Text="Это приложение демонстрирует работу со шрифтами в .NET MAUI"/> <Button x:Name="CounterBtn" Text="Click me" SemanticProperties.Hint="Counts the number of times you click" Clicked="OnCounterClicked" HorizontalOptions="Fill" /> </VerticalStackLayout> </ScrollView> </ContentPage>
Здесь мы использовали свойства управления шрифтами для двух меток. Для первой метки мы установили размер шрифта в 30 единиц, стиль шрифта — курсив и масштабирование:
<Label FontSize="30" FontAttributes="Italic" FontAutoScalingEnabled="True" Text="Привет, мир!" />
Для второй метки мы также установили свой размер шрифта, но стиль установили как жирный курсив:
<Label FontSize="24" FontAttributes="Bold,Italic" FontAutoScalingEnabled="True" Text="Это приложение демонстрирует работу со шрифтами в .NET MAUI"/>
Обратите внимание, как мы в XAML устанавливаем несколько значений для свойства FontAttributes — мы просто перечисляем каждое значение перечисления через запятую
FontAttributes="Bold,Italic"
Теперь запустим приложение и посмотрим на результат:
Что касается свойства FontFamily
, то мы его используем далее. По умолчанию, в приложении .NET MAUI использует на каждой платформе шрифт Open Sans, однако, при желании мы можем зарегистрировать в приложении свои собственные шрифты.
Регистрация собственных шрифтов в .NET MAUI
Регистрация шрифтов, обычно, производится в файле MainProgram.cs. Посмотрим на содержимое этого файла более внимательно:
Все регистрируемые в приложении шрифты, обычно, располагаются в папке Resources/Fonts. При этом, мы можем использовать как шрифты True Type (ttf), так и OpenType (otf).
Для того, чтобы зарегистрировать новый шрифт в системе, мы должны воспользоваться методом расширения для MauiAppBuilder
ConfigureFonts()
. Этот метод принимает делегат вида Action<IFontCollection>
, где IFontCollection
— коллекция, содержащая шрифты.
В свою очередь, метод IFontCollection.AddFont()
добавляет новый шрифт в коллекцию и принимает два параметра: имя файла шрифта и псевдоним (alias) для шрифта, который мы далее будем использовать в приложении.
Рассмотрим процесс регистрации и использования нового шрифта в нашем приложении. Например, ниже будет регистрироваться True Type шрифт с именем Pastry Chef.
Перетаскиваем файл шрифта в папку Resources/Fonts:
Для файла шрифта необходимо установить действие при сборке — MauiFont
, чтобы шрифт скопировался в пакет приложения при сборке.
Теперь зарегистрируем новый шрифт в нашем приложении:
using Microsoft.Extensions.Logging; namespace MauiApp6; public static class MauiProgram { public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); fonts.AddFont("PastryChef.ttf", "PastryChef"); //регистрируем собственный шрифт }); #if DEBUG builder.Logging.AddDebug(); #endif return builder.Build(); } }
Используем наш шрифт в приложении. Изменим содержимое MainPage.xaml следующим образом:
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MauiApp6.MainPage"> <ScrollView> <VerticalStackLayout Padding="30,0" Spacing="25"> <Image Source="dotnet_bot.png" HeightRequest="185" Aspect="AspectFit" SemanticProperties.Description="dot net bot in a hovercraft number nine" /> <Label FontSize="30" FontAttributes="None" FontFamily="PastryChef" FontAutoScalingEnabled="True" Text="Привет, мир!" /> <Label FontSize="24" FontAttributes="Bold,Italic" FontAutoScalingEnabled="True" Text="Это приложение демонстрирует работу со шрифтами в .NET MAUI"/> <Button x:Name="CounterBtn" Text="Click me" SemanticProperties.Hint="Counts the number of times you click" Clicked="OnCounterClicked" HorizontalOptions="Fill" /> </VerticalStackLayout> </ScrollView> </ContentPage>
Здесь мы изменили семейство шрифтов у первой метки. Запустим приложение и убедимся, что приложение действительно использует новый шрифт:Также, не лишним будет отметить и то, что мы можем использовать системные шрифты без их регистрации. Так, в Android нам доступны следующие семейства шрифтов:
- monospaced
- Serif
- sans-serif (или sansserif)
- sans-serif-black (или sansserif-black)
- sans-serif-condensed (или sansserif-condensed)
- sans-serif-сжатый свет (или sansserif-сжатый свет)
- sans-serif-light (или sansserif-light)
- sans-serif-medium (или sansserif-medium)
Работа с текстом в .NET MAUI
Для работы с текстом в .NET MAUI могут использоваться следующие свойства:
Свойство | Тип | Описание |
HorizontalTextAlignment |
Text |
Перечисление, определяющее выравнивание текста по горизонтали. Может принимать следующие значения:
|
TextColor |
Color |
Определяет цвет текста. Про работу с цветами в .NET MAUI см. эту часть. |
TextDecorations |
TextDecorations |
Определяет оформление текста и может принимать следующие значения:
|
TextTransform |
TextTransform |
Определяет регистр текста и может принимать следующие значения:
|
VerticalTextAlignment |
Text |
Перечисление, определяющее выравнивание текста по горизонтали. Описание см. HorizontalTextAlignment |
Воспользуемся этими свойствами в нашем приложении и изменим первую метку на странице MainPage.xaml следующим образом:
<Label FontSize="30" FontAttributes="None" FontFamily="PastryChef" TextColor="Red" TextDecorations="Strikethrough, Underline" TextTransform ="Uppercase" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" FontAutoScalingEnabled="True" Text="Привет, мир!" />
Теперь запустим приложение и посмотрим на результат:
Итого
Для работы со шрифтами в .NET MAUI элементы управления содержат свойства вида Font*
, например, FontFamily
, FotnSize
и так далее. При желании, мы можем зарегистрировать в своем приложении свои собственные шрифты, используя файлы с расширениями ttf или otf. Также в XAML содержится ряд свойств, позволяющие украшать текст элемента — устанавливать цвет шрифта, делать шрифт зачеркнутым и так далее. Эти свойства, содержат в названии слово Text
, например, TextColor
, TextDecorations
и т.д.