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

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