Отображение документов нефиксированного формата

Содержание

Слайд 2

Категории документов в WPF :
https://msdn.microsoft.com/ru-ru/library/ms748388(v=vs.110).aspx
https://professorweb.ru/my/WPF/documents_WPF/level28/28_1.php

Документы фиксированного формата (fixed documents)
Документы нефиксированного формата

Категории документов в WPF : https://msdn.microsoft.com/ru-ru/library/ms748388(v=vs.110).aspx https://professorweb.ru/my/WPF/documents_WPF/level28/28_1.php Документы фиксированного формата (fixed documents)
(Потоковые документы flow documents)

Документы фиксированного формата предназначены для приложений, требующих точного представления в режиме "what you see is what you get" (WYSIWYG), независимо от используемого дисплея или принтера. Обычно используются при подготовке публикаций, обработке текста и разметке формы, где строгое соблюдение исходного дизайна страницы является обязательным. 

Слайд 3

Документы нефиксированного формата предназначены для оптимизации просмотра и удобочитаемости и наиболее удобны

Документы нефиксированного формата предназначены для оптимизации просмотра и удобочитаемости и наиболее удобны
в использовании, когда простота чтения является основным требованием.

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

Слайд 4

Пример c MSDN

Пример c MSDN

Слайд 5

К фиксированным документам в WPF относятся документы на основе XPS.

XPS (англ. XML Paper Specification) — открытый графический

К фиксированным документам в WPF относятся документы на основе XPS. XPS (англ.
формат фиксированной разметки на базе XML, разработанный компанией Microsoft.

XPS-файл представляет собой ZIP-архив с использованием Open Packaging Conventions. Внутри файла находится вся необходимая информация для отображения документа в неизменном виде.

Слайд 6

Документы фиксированного формата, как часть макета, поддерживают точное позиционирование содержимого элементов, независимо от используемых

Документы фиксированного формата, как часть макета, поддерживают точное позиционирование содержимого элементов, независимо
устройств отображения или печати. Например, страница формата фиксированного документа, просматриваемая на экране с разрешением 96 точек на дюйм, будет отображаться точно так же на выводе лазерного принтера с разрешением 600 точек на дюйм или устройстве фотовывода с разрешением 4800 точек на дюйм. Макет страницы остается неизменным во всех случаях, в то время как качество документа повышается в соответствии с возможностями каждого устройства.

Слайд 7

 Отображение содержимого формата фиксированного документа поддерживается с помощью элемента управления DocumentViewer. 

Элемент управления DocumentViewer предназначен для

Отображение содержимого формата фиксированного документа поддерживается с помощью элемента управления DocumentViewer. Элемент
отображения содержимого в режиме только для чтения; редактирование или изменение содержимого недоступно и не поддерживается.

В качестве содержимого DocumentViewer принимает элемент FixedDocument, который как раз и представляет фиксированный документ.





Слайд 8

Фиксированный документ FixedDocument может содержать различное количество страниц.
Каждая страница представляет элемент PageContent.

Фиксированный документ FixedDocument может содержать различное количество страниц. Каждая страница представляет элемент

В этот элемент помещается объект FixedPage, в который в свою очередь помещаются другие элементы (текстовые поля, фигуры и др.)











Слайд 9

Например,








Например,













Слайд 10

Пример создания фиксированного документа в коде

FixedPage pg = new FixedPage();
StackPanel

Пример создания фиксированного документа в коде FixedPage pg = new FixedPage(); StackPanel
panel = new StackPanel();
panel.Children.Add(new TextBlock
{
Text = "Это первая страница документа",
FontSize = 20
});

Слайд 11

ImageSourceConverter converter = new ImageSourceConverter();
string path =
string.Format(@"{0}\{1}", (System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)), "foto.jpg");
ImageSource

ImageSourceConverter converter = new ImageSourceConverter(); string path = string.Format(@"{0}\{1}", (System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)), "foto.jpg"); ImageSource
imageSource =
(ImageSource)converter.ConvertFromString(path);
panel.Children.Add(new Image
{ Source =imageSource ,Height=100,Width=100,Stretch=Stretch.Fill});
pg.Children.Add(panel);
PageContent pc = new PageContent { Child = pg };
fixDoc.Pages.Add(pc);

Слайд 12

pg = new FixedPage();
pg.Children.Add(new TextBlock
{
Text = "Вторая страница",
FontSize

pg = new FixedPage(); pg.Children.Add(new TextBlock { Text = "Вторая страница", FontSize
= 24
});
pc = new PageContent { Child = pg };
fixDoc.Pages.Add(pc);

Слайд 14

Для сохранения и открытия документа применяется класс XpsDocument.
Для его использования нам надо

Для сохранения и открытия документа применяется класс XpsDocument. Для его использования нам
добавить в проект библиотеки ReachFramework.dll и System.Printing.dll.

XpsDocument doc = new XpsDocument(ofd.FileName, FileAccess.Read);
documentViewer.Document = doc.GetFixedDocumentSequence();

Например, открытие и отображение:

Слайд 15

Потоковые документы в WPF представлены классом FlowDocument, который может включать в

Потоковые документы в WPF представлены классом FlowDocument, который может включать в себя
себя различные потоковые элементы (flow elements)
FlowDocument задает строгую модель содержимого для своего дочернего содержимого. Дочерние элементы верхнего уровня, содержащиеся в FlowDocument, должны быть производными от Block и называются блочными. 

Иерархию потоковых элементов можно представить следующим образом:

Отображение содержимого документа нефиксированного формат поддерживается с помощью трех различных элементов управления FlowDocumentReader, FlowDocumentPageViewer и FlowDocumentScrollViewer (можно еше RichTextBox)

Потоковые документы

Слайд 17

 Допустимые дочерние элементы верхнего уровня:

Допустимые дочерние элементы верхнего уровня:

Слайд 18



Привет, Вася!
Ку-ку


Сначала будем использовать контейнер
FlowDocumentScrollViewer

Данный

Привет, Вася! Ку-ку Сначала будем использовать контейнер FlowDocumentScrollViewer Данный элемент управления из
элемент управления из всех подобных ему меньше всего влияет на производительность системы

Слайд 19

У каждого из контейнеров есть свойство IsToolBarVisible – переключатель (тип bool) добавляет

У каждого из контейнеров есть свойство IsToolBarVisible – переключатель (тип bool) добавляет
внизу контейнера просмотра маленький ползунок который и используется для увеличения или уменьшения содержимого. По умолчанию установлено значение false.
Установите для этого свойства значение true и добавьте в параграфы больше текста.

Слайд 20

Свойства масштабирования:
MinZoom – Минимальное значение ползунка увеличения контента.
MaxZoom – Максимально

Свойства масштабирования: MinZoom – Минимальное значение ползунка увеличения контента. MaxZoom – Максимально
значение ползунка увеличения контента.
Zoom – Текущее значение, обычно устанавливается значение 100. Это сохранит первоначальный размер шрифта.
ZoomIncrement – Шаг изменения. На ползунке.

Добавление функциональности Zoom для контейнеров сильно бьет по производительности.

Слайд 21

Все потоковые элементы являются наследниками класса TextElement и могут быть блочными (block) и

Все потоковые элементы являются наследниками класса TextElement и могут быть блочными (block)
строчными (inline).

Элемент Paragraph
Элемент Paragraph содержит коллекцию Inlines, которая в свою очередь включает строковые элементы (не только текст). Чтобы параграф отображал текст, надо использовать строчный элемент Run.


Привет, Вася!

Слайд 22

Если не использовать Run и напрямую писать текст в содержимое параграфа, то элемент Run все равно

Если не использовать Run и напрямую писать текст в содержимое параграфа, то
будет создан, только неявно.

Чтобы получить в коде содержимое параграфа, надо получить текст элемента Run:
string s = ((Run)p1.Inlines.FirstInline).Text;

Элемент List
Представляет собой список. Он содержит коллекцию элементов ListItem, которые и представляют элементы списка.
Каждый из элементов ListItem, в свою очередь, может включать другие блочные элементы

Слайд 23

С помощью свойства MarkerStyle можно задать формат списка:
Disk – Сплошной диск, это значение установлено

С помощью свойства MarkerStyle можно задать формат списка: Disk – Сплошной диск,
по умолчанию
Box – Сплошной квадрат.
Circle – Окружность без заливки.
Square – Квадрат без заливки.
Decimal – Числа по порядку начинаются из свойства StatringIndex которое по умолчанию установлено на 1.
UpperLatin – Латинская буква в верхнем регистре.
LowerLatin – Латинская буква в нижнем регистре.
UpperRoman – Римская маленькая цифра.
LowerRoman – римская большая цифра.
None – без маркера.

Слайд 24

Требования:


C#,WPF,ADO.NET


Комуникабельность


Особая любовь к HTML,

Требования: C#,WPF,ADO.NET Комуникабельность Особая любовь к HTML, JS и PHP
JS и PHP


Слайд 25

Создайте списки

Создайте списки

Слайд 26

Умения:


Пользоваться ножом и вилкой


Windows,Linux

Умения: Пользоваться ножом и вилкой Windows,Linux Всякий текст


Всякий текст


Слайд 27

FontStyle="Italic"
FontWeight="Bold">Умения:



FontStyle="Italic" FontWeight="Bold">Умения: Foreground="Blue">Пользоваться ножом и вилкой Windows,Linux HTML

Foreground="Blue">Пользоваться ножом и вилкой


Windows,Linux


HTML


Слайд 28

Аналог в WPF – тег :

Он используется в параграфе, а не

Аналог в WPF – тег : Он используется в параграфе, а не
в Run

Wpf поддерживает полезную функцию автоматического выравнивания текста.
Для этого еужно задать свойство

Слайд 29

Элемент Table
Организует вывод содержимого в виде таблицы.
Он имеет вложенный элемент TableRowGroup. Этот

Элемент Table Организует вывод содержимого в виде таблицы. Он имеет вложенный элемент
элемент позволяет задать однообразный вид таблицы и содержит коллекцию строк - элементов TableRow (строку таблицы).
А каждый элемент TableRow содержит несколько элементов TableCell (ячейка таблицы).

Если не указать явным образом ширину столбцов, WPF равномерно распределит пространство между всеми столбцами. Это поведение можно изменить, присвоив свойству Table.Rows набор объектов TableColumn и определив для каждого из них ширину Width

Слайд 30

Создайте в документе такую таблицу

Элемент Section
Предназначен для группировки других блочных элементов и

Создайте в документе такую таблицу Элемент Section Предназначен для группировки других блочных
прежде всего для однообразной стилизации этих элементов

Слайд 31

Блок Section напоминает Div из HTML, задав ему свойство , можно задать

Блок Section напоминает Div из HTML, задав ему свойство , можно задать
это же свойство всем дочерним элементам.

Добейтесь в своем документе такого эффекта:

Слайд 32

Элемент BlockUIContainer
Позволяет добавить в документ различные элементы управления, которые не являются блочными

Элемент BlockUIContainer Позволяет добавить в документ различные элементы управления, которые не являются
или строчными элементами. Например, можно добавить кнопку или картинку к документу. 


        
            
Click the Button to see TIOBE Rate

            
        

    

Слайд 33

Добавьте в документ элементы управления:

Добавьте в документ элементы управления:

Слайд 34

Строчные элементы
Run - хранит некоторый текст, выводимый в блочном элементе

Span
Объединяет другие строчные

Строчные элементы Run - хранит некоторый текст, выводимый в блочном элементе Span
элементы и применяет к ним определенное форматирование



Привет, Вася!
Ку-ку

Му-му

Слайд 35

Чтобы задать для текста отдельные способы форматирования, применяются элементы Bold, Italic и Underline, которые позволяют

Чтобы задать для текста отдельные способы форматирования, применяются элементы Bold, Italic и
создать текст полужирным шрифтом, курсивом и подчеркнутый текст соответственно.



Привет, Вася!

Ку-ку



Му-му


Слайд 36

Элемент Hyperlink позволяет вставить в документ ссылку для перехода 


Microsoft

InlineUIContainer подобен  BlockUIContainer (позволяет помещать

Элемент Hyperlink позволяет вставить в документ ссылку для перехода Microsoft InlineUIContainer подобен
другие элементы управления), только является строковым.

Элементы Floater и Figure позволяют вывести плавающее окно с некоторой информацией, текстом, картинками и прочим:

Слайд 37

Джордж Плейтен сказал с плохо скрытой тоской в голосе:
- Завтра первое

Джордж Плейтен сказал с плохо скрытой тоской в голосе: - Завтра первое
мая. Начало Олимпиады!
HorizontalAlignment="Left"
FontSize="18" FontStyle="Italic">
Айзек Азимов. Профессия

Он перевернулся на живот и через спинку кровати пристально посмотрел
на своего товарища по комнате. Неужели он не чувствует того же? Неужели
мысль об Олимпиаде совсем его не трогает?...

Слайд 38

Остальной текст будет обтекать элемент Floater, заданный таким образом, справа.

Остальной текст будет обтекать элемент Floater, заданный таким образом, справа.

Слайд 39

По умолчанию плавающее окошко, используемое для элемента Floater, является невидимым. Но для

По умолчанию плавающее окошко, используемое для элемента Floater, является невидимым. Но для
него можно задать текстурированный фон (с помощью свойства Background) или рамку (с помощью свойств BorderBrush и BorderThickness). Можно также использовать свойство Margin, чтобы добавить промежуток между плавающим окошком и документом, и свойство Padding, чтобы добавить промежуток между краями окошка и его содержимым.

Figure аналогичен элементу Floater, но дает больше возможностей по контролю за позиционированием.

Слайд 40

С помощью свойства HorizontalAnchor можно управлять позиционированием элемента по горизонтали. Так, значение ContentLeft позволяет выровнять

С помощью свойства HorizontalAnchor можно управлять позиционированием элемента по горизонтали. Так, значение
текст по левой стороне, ContentRight - по правой стороне, а значение ContentCenter - по центру, свойство VerticalAnchor позволяет выровнять содержимое Figure по вертикали

Сделайте так, используя Floater, а потом Figure

Слайд 41

FlowDocumentPageViewer
Разбивает документ на страницы в зависимости от размеров текста и размеров окна

FlowDocumentPageViewer Разбивает документ на страницы в зависимости от размеров текста и размеров
и отображает их для чтения. когда текст имеет слишком длинные строки, если сказать по другому то этот контейнер при больших размерах окна показывает сразу несколько страниц.

Данный элемент управления не позволяет отключать возможность Zoom

Слайд 42

Для управления столбцами у элемента FlowDocument можно настроить следующие свойства:
ColumnWidth: устанавливает ширину

Для управления столбцами у элемента FlowDocument можно настроить следующие свойства: ColumnWidth: устанавливает
столбца
ColumnGap: устанавливает расстояние между столбцами
IsColumnWidthFlexible: при значении True контейнер сам корректирует ширину столбца
ColumnRuleWidth и ColumnRuleBrush: устанавливает соответственно ширину границы между столбцаи и ее цвет
Имя файла: Отображение-документов-нефиксированного-формата.pptx
Количество просмотров: 41
Количество скачиваний: 0