Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Приложения с GUI и дескрипторная графика.doc
Скачиваний:
49
Добавлен:
01.05.2014
Размер:
699.39 Кб
Скачать

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)

приведет к ошибке!