Главная » WPF » Шрифты

0

Как ни странно, в WPF нет класса Font.  Вместо него имеется набор атрибу тов, сочетание которых можно рассматривать как определение шрифта: FontFamily, FontSize, FontStretch, FontStyle и FontWeight. Есть и много других атрибутов, которые изменяет способ рендеринга текста, например: TextDecorations добавляет  подчеркивание или зачеркивание, Capitals  изменяет регистр букв. В общем и целом, на внешний  вид отображаемого  текста влияют не менее 40 свойств.

Рис. 5.47. «Здравствуй, мир», распечатанный в виде XPS документа, при просмотре в Internet Explorer

Начнем  с самого начала, со свойства  FamilyTypeface. Термином  typeface  (гар нитура)  обозначается конкретный набор определений символов, чаще всего их на чертание. Гарнитуры  обычно хранятся в файле типа TrueType или OpenType (OpenType – это единый  формат  файла,  в котором  могут храниться гарнитуры, представленные в разных  форматах). В большинстве  компьютеров  под управле нием ОС Windows файлы, которые находятся  в каталоге c:\windows\fonts (может изменяться в зависимости от того, куда установлена операционная система), – это гарнитуры21.

 

Ниже приведен список из нескольких  элементов, содержащий в том числе вложенный список. Свойство  MarkerStyle определяет  внешний  вид маркера, ко торый предшествует  каждому элементу  списка (рис. 5.50), а StartIndex управля ет нумерацией элементов  (в текущей версии WPF создание нестандартных мар керов не поддерживается).

<FlowDocument>

<Paragraph>Это простой список:</Paragraph>

<List>

<ListItem><Paragraph>Элемент 1</Paragraph></ListItem>

<ListItem>

<Paragraph>Элемент 2</Paragraph>

<List Margin=’0’>

<ListItem><Paragraph>Подэлемент 1</Paragraph></ListItem>

<ListItem><Paragraph>Подэлемент 2</Paragraph></ListItem>

</List>

</ListItem>

</List>

<Paragraph BreakColumnBefore=’True’>В списках могут быть разные маркеры:

</Paragraph>

<List MarkerStyle=’Decimal’>

<ListItem><Paragraph>Элемент 1</Paragraph></ListItem>

<ListItem>

<Paragraph>Элемент 2</Paragraph>

<List Margin=’0’ MarkerStyle=’Box’>

<ListItem><Paragraph>Подэлемент 1</Paragraph></ListItem>

<ListItem><Paragraph>Подэлемент 2</Paragraph></ListItem>

</List>

</ListItem>

</List>

</FlowDocument>

Таблицы

Списки  и абзацы – это основные строительные блоки механизма размещения текста, но прародителем всех способов размещения является элемент Table. Таб личная  верстка  много лет была опорой  и надежей  Web сообщества, поскольку, если  не считать  плавающего  текста,  это был единственный способ  управления размещением. В современных  версиях  HTML  акцент  постепенно  смещается  на элементы  DIV с полями  и абсолютным  позиционированием, но таблицы все еще применяются для сложной и выразительной верстки.

В WPF для табличной  верстки применяется элемент Table, который ведет се бя так, как мы привыкли, работая с HTML,  Word  и большинством программ ти пографской  верстки. Так же, как и в случае List, объектная  модель накладывает ряд ограничений,  а именно: Table может содержать только объекты TableRowGroup, TableRowGroup – только объекты TableRow,  TableRow  – толь ко объекты TableCell,  а TableCell  – это блочный  контейнер,  поэтому обычно он содержит один или несколько  абзацев.

Поскольку классы Table, TableRowGroup, TableRow  и TableCell  наследуют BlockElement, то все они поддерживают ящичную модель (подобно классу Paragraph, обладают свойствами  Margin, Padding и BorderThickness), что обеспе чивает высокую гибкость размещения. Кроме того, объект Table содержит набор объектов типа TableColumn, а это позволяет  применять форматирование сразу ко всему столбцу.

Простая таблица

Ячейка

Ячейка

Ячейка

Ячейка

Ячейка

Ячейка

Ячейка

Ячейка

Сложная таблица

Ячейка

Ячейка

Ячейка

Ячейка

Ячейка

Ячейка

Ячейка

Ячейка

Рис. 5.51. Две таблицы с толстой внешней границей и тонкими границами отдельных ячеек

На рис. 5.51 изображены две таблицы. Структура первой совсем проста, а на примере второй демонстрируются более развитые возможности: свойства RowSpan, ColumnSpan и вложенная таблица:

<FlowDocument>

<Paragraph>Простая таблица</Paragraph>

<Table>

<TableRowGroup>

<TableRow>

<TableCell><Paragraph>Ячейка 1</Paragraph></TableCell>

<TableCell><Paragraph>Ячейка 2</Paragraph></TableCell>

<TableCell><Paragraph>Ячейка 3</Paragraph></TableCell>

<TableCell><Paragraph>Ячейка 4</Paragraph></TableCell>

</TableRow>

<TableRow>

<TableCell><Paragraph>Ячейка 1</Paragraph></TableCell>

<TableCell><Paragraph>Ячейка 2</Paragraph></TableCell>

<TableCell><Paragraph>Ячейка 3</Paragraph></TableCell>

<TableCell><Paragraph>Ячейка 4</Paragraph></TableCell>

</TableRow>

</TableRowGroup>

</Table>

<Paragraph>Сложная таблица</Paragraph>

<Table>

<TableRowGroup>

<TableRow>

<TableCell ColumnSpan=’3’>

<Table>

<TableRowGroup>

<!— другие ячейки —>

</TableRowGroup>

</Table>

</TableCell>

<TableCell RowSpan=’2’>

<Paragraph>Ячейка 4</Paragraph>

</TableCell>

</TableRow>

<TableRow>

<TableCell><Paragraph>Ячейка 1</Paragraph></TableCell>

<TableCell><Paragraph>Ячейка 2</Paragraph></TableCell>

<TableCell><Paragraph>Ячейка 3</Paragraph></TableCell>

</TableRow>

</TableRowGroup>

</Table>

</FlowDocument>

Источник: К. Андерсон  Основы  Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, 2008 — 432 с.: ил.

По теме:

  • Комментарии