- •Санкт-Петербургский государственный электротехнический университет
- •______________________________________________________________________ Кафедра моэвм
- •Санкт-Петербург
- •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.5. Указание положения текстового объекта и надписи при помощи свойств. Пример: "бегущая строка".
Иногда возникает проблема перемещения существующего текстового объекта или изменения текстовой надписи. Конечно, ее можно решить удалением существующего текстового объекта при помощи функции delete и созданием нового в нужной точке и с требуемой надписью. Однако, проще изменить значение свойств Position и String, которые как раз и отвечают за расположение текстового объекта и его надписи.
Значением свойства Position является вектор из двух или трех компонент (координат текстового объекта), если третья компонента не указана, то она полагается равной нулю, что удобной при размещении текста на двумерных графиках. Единицы измерения определяются значением свойства Units и по умолчанию положение текста задается в системе координат осей (см. Размещение текстового объекта, определение его размеров и положения).
Значением свойства String может быть:
строка или строковая переменная для получения одной строки текста;
массив строк или массив ячеек, каждая ячейка которого содержит строку, для вывода многострочного текста.
Выводу многострочного текста посвящен отдельный пункт (см. Вывод многострочного текста). Сейчас в качестве примера использования свойств Position и String мы рассмотрим организацию вывода текста в виде бегущей строки.
Сначала создадим графическое окно черного цвета без панели инструментов и строки меню, причем установим для него пункты в качестве единиц измерения. Далее изменим его размеры так, чтобы его ширина составляла 150пт., а высота 20пт., причем левый нижний угол графического окна остался на месте. Создадим невидимые оси, совпадающие по размеру с графическим окном, и текстовый объект. Далее в цикле формируем строковую переменную str так, чтобы она содержала 15 идущих подряд символов заданного в строковой переменной TEXT текста, последовательно смещающихся по порядку от первого символа. Через 0.1 секунды будем изменять значение свойства String текстового объекта, присваивая ему содержимое строковой переменной str. В результате получим небольшое графическое окно, в которое в режиме бегущей строки выводится текст: "This is a simple example of creeping line".
% создание графического окна размером 150пт. на 20пт. и невидимых осей
hF = figure('Units', 'points', 'MenuBar', 'none', 'Color', 'k');
p = get(hF, 'Position')
set(hF, 'Position', [p(1) p(2) 150 20])
axes('Position', [0 0 1 1], 'Visible', 'off')
% создание текстового объекта с выравниванием по горизонтали по низу
hT = text('Position', [0 0], 'VerticalAlignment', 'bottom', 'FontSize', 20, 'Color', 'g');
% задание текста для бегущей строки
TEXT = 'This is a simple example of creeping line';
% создание пустой строковой переменной
str = '';
% изменение строковой переменной в цикле
for k=1:length(TEXT)
if length(str)<15
str = [str TEXT(k)];
else
% здесь начинается эффект бегущей строки
str = [str(2:length(str)) TEXT(k)];
end
set(hT, 'String', str)
pause(0.1)
end