- •Санкт-Петербургский государственный электротехнический университет
- •______________________________________________________________________ Кафедра моэвм
- •Санкт-Петербург
- •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.7.1. Текстовый объект, вывод текста и математических формул в графическое окно.
В этом разделе описана работа с текстовыми объектами, которые создаются функцией текст. Мы рассмотрим задание положения текстового объекта, его вида, разберем свойства текстовых объектов, отвечающие за форматирование шрифта и других настроек текстовых объектов, включая поворот, рамку вокруг текста и вывод многострочного текста. Отдельные подразделы посвящены выводу многострочного текста и написанию математических формул.
5.7.2. Размещение текстового объекта, определение его размеров и положения.
Начнем с простого примера, в котором график функции следует снабдить текстовой информацией так, как на приведенном ниже рисунке.
Для получения такого графика достаточно выполнить следующие команды:
>> x = -1:0.05:1;
>> y = exp(x).*sin(3*x);
>> plot(x, y)
и добавить текстовый объект при помощи функции text. Первыми ее входными аргументами являются координаты объекта, а сам текст задается строкой:
>> hT = text(0, -0.5, 'y(x)=exp(x)sin(3x)')
Функция text возвращает указатель на созданный текстовый объект, который в данном случае записан в переменную hT. Он может понадобиться для дальнейшего изменения свойств текстового объекта, например размера шрифта. По умолчанию, размер шрифта 10 пт, что написано в справочной системе MATLAB в разделе с информацией о текстовых объектах, до которого проще всего добраться при помощи команды
>> doc text
(см. таблицу внизу страницы этого раздела справочной системы). За размер шрифта отвечает свойство FontSize. Напомним, что текущее значение какого-либа свойства графического объекта всегда можно узнать при помощи функции get:
>> get(hT, 'FontSize')
ans =
10
Действительно, размер 10 и именно пунктов, поскольку в MATLAB пункты выбраны по умолчанию в качестве единиц для задания размера шрифта. Выбор единиц измерения размера шрифта определяется значением свойства FontUnits текстового объекта, которое по умолчанию есть 'points' (т.е. пункты, 1пт = 1/72 дюйма). Возможно отказаться от пунктов и выбрать другие значения свойства FontUnits, ими могут быть:
'inches' (дюймы);
'centimeters' (сантиметры);
'pixels' (пиксели);
'normalized' (нормализованные).
Выбор нормализованных единиц удобен, если размер шрифта должен определяться размером осей (1 нормализованная единица равна высоте осей), скажем, требуется разместить текстовую надпись высотой в половину высоты оси ординат:
>> figure
>> axes
>> hT1 = text(0, 0.5, 'ABC')
>> set(hT1, 'FontUnits', 'normalized', 'FontSize', 0.5)
Кроме того, выбор нормализованных единиц приводит к автоматическому изменению размеров шрифта при изменении размеров осей.
В этом примере мы сначала создали графическое окно и оси при помощи функций figure и axes, соответственно. Обратите внимание, что по умолчанию функция axes создает оси, у которых пределы оси абсцисс и оси ординат есть [0, 1]. При выводе текстового объекта функцией text мы указали координаты: 0 по оси абсцисс и 0.5 по оси ординат. Сейчас абсцисса левого нижнего угла текстового объекта равна нулю, а середина текстового объекта по вертикали имеет ординату 0.5. Так происходит потому, что два свойства текстового объекта: HorizontalAlignment и VerticalAlignment, отвечающие за выравнивание текста соответственно по горизонтали и вертикали, по умолчанию имеют следующие значения:
HorizontalAlignment = 'left' и VerticalAlignment = 'middle'.
Свойство HorizontalAlignment может принимать значения 'left' (по умолчанию), 'center' и 'right', а VerticalAlignment - 'top', 'cap', 'middle', 'baseline', 'bottom'. Смысл значений свойства HorizontalAlignment вполне очевиден. Значения 'cap', 'middle' и 'baseline' означают вертикальное выравнивание по заглавным буквам, середине и нижней линии текста, соответственно. Поместим текст "ApqC" размера 70пт в точку с координатами (0, 0.5) и для наглядности нарисуем линию, параллельную горизонтальной оси, которая проходит через y = 0.5:
>> figure
>> axes
>> hT2 = text(0, 0.5, 'ApqC')
>> set(hT2, 'FontSize', 70)
>> line([0 1], [0.5 0.5])
Теперь, изменяя значение свойства VerticalAlignment, можно понаблюдать за поведением текста, см. рисунки:
>> set(hT2, 'VerticalAlignment', 'baseline') | |
>> set(hT2, 'VerticalAlignment', 'cap') | |
>> set(hT2, 'VerticalAlignment', 'middle') (как по умолчанию) |
Значения 'top' и 'bottom' свойства VerticalAlignment означают выравнивание некоторого прямоугольника, в который заключен текст (): 'top' - верхняя сторона прямоугольника имеет заданную координату (в нашем примере 0.5), 'bottom' - нижняя сторона прямоугольника имеет заданную координату (также 0.5 в нашем примере). Координаты этого прямоугольника определяются значением свойства Extent текстового объекта. Это свойство доступно только для чтения, его нельзя изменять и его значением является вектор из четырех элементов [left, bottom, width, height], где left и bottom - координаты левого нижнего угла прямоугольника, а width и height, соответственно, ширина и высота. По умолчанию, эти величины заданы в системе координат осей. Так происходит потому, что свойство Units (не путать с FontUnits) по умолчанию имеет значение 'data'. Другими возможными значениями свойства Units являются 'pixels' (пиксели), 'inches' (дюймы), 'centimeters' (сантиметры), 'points' (пункты) или нормализованные единицы (считается, что левый нижний угол осей имеет координаты (0, 0), а правый верхний - (1, 1)). Если значение свойства Units отлично от 'data', т.е. мы работаем не в системе координат осей, то меняется и смысл элементов вектора [left, bottom, width, height], который является значением свойства Extent. Именно, элементы left и bottom теперь равны расстоянию от нижнего левого угла осей по горизонтали и вертикали, соответственно, а width и height - ширина и высота прямоугольника, ограничивающего текстовый объект. Разумеется, left, bottom, width и height заданы в тех единицах измерения, которые выбраны при помощи свойства Units текстового объекта.