- •Санкт-Петербургский государственный электротехнический университет
- •______________________________________________________________________ Кафедра моэвм
- •Санкт-Петербург
- •2007 Введение
- •Взаимодействие между пользователем и компьютером
- •Основные принципы создания интерфейса
- •Проектирование эргономичного интерфейса
- •Размещение информации на экране
- •Использование цвета
- •Выделение элементов интерфейса
- •Непротиворечивость и стандартизация
- •Отображение текстовой информации
- •Ввод текстовой информации
- •Дизайн заголовков и полей
- •Средства управления графическим интерфейсом
- •Принципы создания и проектирования меню
- •5. Дескрипторная графика
- •5.1. Назначение дескрипторной графики
- •5.2. Иерархия графических объектов
- •5.3. Текущий графический объект; указатели на объекты
- •5.4. Доступ к значениям свойств графических объектов
- •5.5. Свойства осей
- •5.6. Свойства графических окон
- •5.6.1. Расположение и вид графических окон
- •5.6.2. Способы графического вывода
- •5.6.3. Цветовая палитра
- •5.6.4. Печать графического окна
- •5.7. Базовые графические объекты.
- •5.7.1. Текстовый объект, вывод текста и математических формул в графическое окно.
- •5.7.2. Размещение текстового объекта, определение его размеров и положения.
- •5.7.3. Размещение текста на трехмерных графиках.
- •5.7.4. Изменение вида текстового объекта.
- •5.7.5. Указание положения текстового объекта и надписи при помощи свойств. Пример: "бегущая строка".
- •5.7.6. Вывод многострочного текста.
- •5.7.7. Примечание про логическое индексирование.
- •5.7.8. Заголовок и подписи осей это текстовые объекты, потомки осей.
- •6. Приложения с gui
- •6.1. Создание приложения hello в среде guide
- •6.2. Запуск приложения без среды guide и редактирование
- •6.3. Как работает приложение, созданное в среде guide?
- •7. Заключение
5.6.4. Печать графического окна
Название ряда свойств графического окна начинаются со слова Paper, очевидно, что они отвечают за способ печати графических окон.
Несколько свойств предназначены для задания размеров и ориентации листа бумаги.
PaperUnits - единицы измерения для задания размеров листа бумаги и положения графического окна, которые отсчитываются от нижнего левого угла. Значениями свойства PaperUnits может быть: 'normalized' (высота и ширина листа равны единице), 'inches' (дюймы, по умолчанию), 'centimeters' (сантиметры) или points (пункты, 1пт =1/72 дюйма).
PaperSize - размеры листа бумаги. Его значением является вектор из двух элементов [width height], задающих, соответственно, ширину и высоту листа в единицах, указанных в PaperUnits. Вместо задания размера, можно выбрать один из предопределенных: 'A0', 'A1', 'A2', 'A3', 'A4' и др. (их много), воспользовавшись свойством PaperType (по умолчанию его значение 'A4'). Изменение PaperType приводит к автоматическому изменению PaperSize, а изменение PaperSize влечет установку PaperType в 'custom'.
PaperOrientation - 'portrait' (по умолчанию), или landscape.
Следующие свойства служат для определения положения и вида графического окна на листе бумаги.
PaperPosition - вектор из четырех элементов [left, bottom, width, height], задающих координаты нижнего левого угла, ширину и высоту в единицах измерения, установленных в PaperUnits. Для расположения графического окна с указателем hF на всей области листа с полями по 1/4 дюйма проще всего воспользоваться функцией orient: orient(hF, 'tall').
PaperPositionMode - способ вывода графического окна на печать. Может принимать значения: 'auto' (тогда в центре листа печатается окно того же размера, что и на экране), или 'manual' (по умолчанию, при этом размер при печати определяется значением PaperPosition).
InvertHardcopy - при печати фон окна и осей становится белым, если это свойство принимает значение 'on' (по умолчанию). Значение 'off' соответствует печати с сохранением цветов.
Данные свойства позволяют задать опции печати и в сочетании с последующим применением команд print, printopt, printdlg, printpreview организовать печать графических результатов, например:
hF1=figure
mesh(peaks(30))
printpreview(hF1)
Все эти команды работают с одним графическим окном (текущим, по умолчанию, если не задавать указатель). Предположим, что Ваше приложение выводит графики в разные окна и пользователь выбирает несколько из них для печати на одном листе. Рассмотрим один из возможных способов на примере двух графических окон, первое из которых содержит оси с графиком поверхности, а второе - оси со столбцевой диаграммой:
hF1 = figure;
hA1 = axes;
mesh(peaks(30))
hF2 = figure;
hA2 = axes;
bar3(rand(3))
В некотором месте программы требуется напечатать содержимое осей с указателями hA1 и hA2 на одном листе. Для этого:
1) создаем невидимое графическое окно с указателем hFTemp; 2) копируем оси (вместе с их потомками) с указателем hA1 в графическое окно hFTemp, пользуясь функцией copyobj, получаем новые оси с указателем hA1Temp; 3) задаем размеры hA1Temp осей при помощи свойства OuterPosition так, чтобы они занимали левую половину окна hFTemp; 4) аналогично поступаем с осями hA2, скопированные вместе с содержимым оси hA2Temp размещаем в правой половине графического окна hFTemp; 5) вызываем, например, функцию printpreview для предварительного просмотра и печати.
hFTemp = figure('Visible', 'off');
hA1Temp = copyobj(hA1, hFTemp)
set(hA1Temp, 'OuterPosition', [0 0 0.5 1])
hA2Temp = copyobj(hA2, hFTemp)
set(hA2Temp, 'OuterPosition', [0.5 0 0.5 1])
printpreview(hFTemp)
В конце программы вспомогательное окно можно удалить при помощи delete(hFTemp).
Функция copyobj служит для копирования объекта вместе с потомками. Обращение к ней выглядит следующим образом:
hNew = copyobj(hOld, hParent),
где hOld - указатель на копируемый объект, hParent - предок для нового объекта, hNew - указатель на новый объект. При использовании copyobj необходимо следить за иерархией объектов: оси могут быть скопированы только на графическое окно, поверхности и линии только на оси. Например, последовательность команд:
hF = figure
hS = surf(peaks(50))
hF1 = figure
hS1 = copyobj(hS,hF1)
приведет к ошибке!