Главная » WPF » «Здравствуй, мир» – текстовый вариант

0

Ранее  в этой книге мы уже упоминали некоторые  ключевые  характеристики текста.  Простейший способ  вывести  текст  – поместить  его непосредственно в элемент управления TextBlock  (рис. 5.42):

<TextBlock> Hello World

</TextBlock>

Возможно,  это кажется  не очень интересным,  но происходит  тут много всего. Напомним,  что все проходит  через трехмерный  конвейер,  поэтому  для  вывода этого текста необходимо  прочитать  шрифтовые  файлы,  получить  описания  гли фов, создать либо их растровые  изображения (если шрифт  мелкий),  либо слож ные пути (для  крупных  шрифтов) и, наконец,  превратить  все это в трехмерные треугольники для вывода. Но даже и это все не очень интересно.  Самое увлека тельное начинается  на следующем этапе.

В WPF есть все стандартные  текстовые  элементы,  которые  необходимы  для представления обогащенного  текста.  WPF не поддерживает перекрывающихся

Рис. 5.46. «Здравствуй, мир» со встроенными элементами управления

Напомним,  что в главе 3 мы обсуждали  несколько  элементов  для просмотра документов, обеспечивающих  максимально удобное восприятие содержимого. Добавив  в качестве  корня  дерева элемент  FlowDocumentReader (рис.  5.45), мы сможем лучше управлять отображением документа:

<FlowDocumentReader>

<FlowDocument>

<Paragraph> иероглифы, <Run FontWeight=’Bold’>bold</Run>, <Run FontStyle=’Italic’>italic</Run>, <Run TextDecorations=’Underline’>etc.</Run></Paragraph>

<Paragraph>We can switch over to the <Run FontFamily=’Lucida Console’>FlowDocument</Run> control, and add a second paragraph with some more interesting text.</Paragraph>

</FlowDocument>

</FlowDocumentReader>

Документ, погруженный в элемент Reader, можно либо прокручивать в преде

лах одной страницы, либо разбить на страницы. Тема интеграции обнаруживает

ся и при отображении текста; в пользовательском интерфейсе  не только  могут присутствовать документы  с развитым  содержимым,  но и они сами могут содер жать внутри себя произвольные элементы  управления WPF (рис. 5.46):

<FlowDocumentReader>

<FlowDocument>

<Paragraph> иероглифы, <Run FontWeight=’Bold’>bold</Run>, <Run FontStyle=’Italic’>italic</Run>, <Run TextDecorations=’Underline’>etc.</Run></Paragraph>

<Paragraph>We can <Button>switch</Button> over to the

<Run FontFamily=’Lucida Console’>FlowDocument</Run> control,

and   add   a   second   paragraph   with   some   more   interesting text.</Paragraph>

</FlowDocument>

</FlowDocumentReader>

Итак, у нас есть интегрированный документ, осталось только распечатать. Существует два способа печати документа: (1) отправить команды принтеру напрямую  или  (2)  создать  документ  фиксированного формата,  содержащий ту же информацию. Согласно новому формату документов XML Paper Specification (XPS), создается  статическая версия  документа,  которую  мож но распечатать  и архивировать. Более  того, уже есть принтеры,  которые под держивают  XPS  на аппаратном  уровне  в качестве  одного  из форматов  спу линга.

Чтобы преобразовать документ в формат XPS, необходимо создать файл с по мощью OPC  (Open  Packaging  Conventions) API. Затем  можно создать в контей нере объект XpsDocument и вывести его в хранилище:

using (Package containerPackage

= Package.Open(@»c:\test.xps», FileMode.Create))

{

using (XpsDocument xpsDoc = new XpsDocument(containerPackage))

{

XpsDocumentWriter writer

= XpsDocument.CreateXpsDocumentWriter(xpsDoc);

writer.Write( ((IDocumentPaginatorSource)theDocument).DocumentPaginator);

}

}

Чтобы  загрузить  сохраненный  документ  в программу  просмотра,  доста точно дважды щелкнуть  мышью по контейнеру  на диске (рис. 5.47). Обрати те внимание, что при просмотре документа кнопка перестала быть интерак тивной,  так как документы  в формате  XPS  – это лишь  статические  снимки, которые  можно  экспортировать на любую платформу,  печатать  и т.д; в них древовидная структура приводится к плоскому тексту и простой векторной графике.

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

По теме:

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