MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

Приложения с GUI и дескрипторная графика

Базовые графические объекты.

Объект Text

Положение текстового объекта

Position - положение текстового объекта. Значения: вектор из двух [x y] или трех [x y z] элементов, задающий положение текста в двумерных или трехмерных осях. Единицы измерения определяются значением свойства Units.

Units - единицы измерения для задания значения свойству Position, отсчет производится от нижнего левого угла координатных осей. Значения:

относительные

  • 'data' (по умолчанию) - положение текста задается в системе координат осей
  • 'normalized' - считается, что координаты левого нижнего угла прямоугольной области осей равны (0, 0), а координаты верхнего правого угла прямоугольной области осей равны (1, 1), т.е. используется линейное отображение квадрата [0,1]x[0,1] на прямоугольную область, занимаемую осями.
  • 'pixels', 'inches', 'centimeters', 'points' - пиксели, дюймы, сантиметры, пункты (1пункт = 1/72 дюйма).

Extent - положение и размер прямоугольной области (рамки), которую занимает текст. Это свойство доступно только для чтения и определяется значением свойства Position, а так же шириной и высотой текста. Значение - вектор из четырех элементов [left,bottom,width,height], где

  • left и bottom - расстояние от нижнего левого угла осей до нижнего левого угла рамки в единицах измерения, задаваемых значением свойства Units.
  • width и height - ширина и высота рамки в единицах измерения, задаваемых значением свойства Units.

Margin - величина полей вокруг рамки, содержащей текст. Значение задается числом, единицы измерения - пиксели.

ht = text(0.3,0.3,'Simple text','BackgroundColor','y')

приводит к

Теперь увеличим поля

set(ht,'Margin',20)

получим

Выравнивание текста

HorizontalAlignment - выравнивание текста по горизонтали. Значения: 'left' (по умолчанию), 'center', 'right' - соответственно, по левому краю, по центру, по правому краю.

VerticalAlignment - выравнивание текста по вертикали в зависимости от координаты y в значении свойства Position. Значения:

  • 'top' - верхняя сторона рамки вокруг текста имеет ординату y, указанную при задании значения свойству Position
  • 'bottom' - нижняя сторона рамки вокруг текста имеет ординату y, указанную при задании значения свойству Position
  • 'cap' - верх заглавной буквы текста имеет ординату y, указанную при задании значения свойству Position
  • 'middle' (по умолчанию) - середина текста (по вертикали) имеет ординату y, указанную при задании значения свойству Position
  • 'baseline' - базовая линия имеет ординату y, указанную при задании значения свойству Position (базовая линия в полиграфии - линия, на которой лежат самые нижние точки букв строки за исключением подстрочных элементов букв "g", "ц" и др.).

Следующая таблица содержит всевозможные сочетания значений свойств HorizontalAlignment и VerticalAlignment. Точка, координаты которой указаны в векторе, являющемся значением свойства Position, находится на пересечении красных линий.

  left center right
top
bottom
cap
middle
baseline

Поворот текстового объекта

Rotation - угол поворота против часовой стрелки. Значение в градусах, ноль по умолчанию.

Задание и смена текста в текстовом объекте

String - текст. Значения:

  • текстовая строка в апострофах или текстовая переменная;
  • массив ячеек, каждая из которых содержит строки (для задания массива ячеек используются фигурные скобки);
  • матрица символов, каждая строка которой задает строку текста (матрицу символов проще всего получить, применяя функцию char).

Interpreter - использование интерпретаторов TeX или LaTeX для вывода математических формул. Значения:

  • 'tex' (по умолчанию) - использовать интерпретатор TeX;
  • 'latex' - использовать интерпретатор LaTeX (появляются б?льшие возможности по сравнению с интерпретатором TeX);
  • 'none' - не использовать никаких интерпретаторов, все символы, в том числе и команды TeX и LaTeX выводятся как обычный текст.

Смена начертания, вывод математических формул с использованием интерпретаторов TeX и LaTeX описано в разделе Вывод математических формул, смена шрифта и начертания.

Примеры задания многострочного текста:

%  Создаем строковые переменные
s1='AAAAAAAAA';
s2='BBBBB';
s3='CCCCCCCCCCCC';

% Формируем массив символов
s=char(s1,s2,s3);
% Выводим текстовый объект
text('Position',[0.3 0.3], 'String', s);
	% Или формируем массив ячеек строк
s={s1; s2; s3}
% Выводим текстовый объект
text('Position',[0.6 0.6], 'String', s);

Форматирование текстового объекта

FontName - название шрифта. Значения: строка или строковая переменная, содержащая имя одного из шрифтов, установленных на компьютере, или строка 'FixedWidth' для задания моноширинного шрифта. По умолчанию используется шрифт Helvetica.

FontSize - размер шрифта в единицах измерения, указанных в свойстве FontUnits (пунты, по умолчанию). Значение - число.

FontUnits - единицы измерения размера шрифта. Значения:

  • 'points' (по умолчанию), 'centimeters', 'pixels' - соответственно, пункты (1пункт = 1/72 дюйма 0,035см.), сантиметры, пиксели;
  • normalized - нормализованные, т.е. размер шрифта пропорционален высоте осей - предков текстового объекта; при изменении размеров осей (программно или пользователем) размер шрифта изменяется пропорционально.

Перед заданием размера шрифта, т.е. значения свойства FontSize, следует установить значение свойству FontUnits, т.е. если требуется сделать размер шрифта в текстовом объекте равным четырем сантиметрам, то команда

set(ht,'FontSize',4,'FontUnits','centimeters')

где ht - указатель на текстовый объект, является неверной - она устанавливает размер шрифта 4пт (поскольку по умолчанию единицами измерения шрифта являются пункты) и затем изменяет значение свойства FontUnits. Только при последующем изменении размеров шрифта текстового объекта размер будет браться в сантиметрах. Верной командой является:

set(ht, 'FontUnits','centimeters','FontSize',4)

в которой сначала задается значение свойству FontUnits и только затем - FontSize.

FontWeight - жирность шрифта. Значения:

  • 'normal' (по умолчанию) - обычный;
  • 'demi' - полужирный;
  • 'bold' - обычно тот же результат, что и при использовании demi.

FontAngle - начертание. Значения:

  • 'normal' (по умолчанию) - прямой шрифт;
  • 'italic' - курсив;
  • 'oblique' - обычно тот же результат, что и при использовании italic.

Color - цвет шрифта текстового объекта. Значения:

  • один из предопределенных цветов: 'k' (черный, задается по умолчанию), 'r' (красный), 'g' (зеленый), 'b' (синий), 'c' (циан), 'm' (магента), 'y' (желтый), 'w' (белый);
  • цвет в формате RGB, задаваемый вектором из трех элементов [R G B], причем R,G,B могут меняться от 0 до 1 для задания интенсивности, например [1 0 0] соответствует предопределенному цвету 'r', а [0.9 0.9 0.9] - светло-серому.

EdgeColor - цвет рамки (размеры которой определяются свойством Extent) вокруг текста. Значения:

  • 'none' - по умолчанию нет рамки;
  • один из предопределенных цветов: 'r' (красный), 'g' (зеленый), 'b' (синий), 'c' (циан), 'm' (магента), 'y' (желтый), 'k' (черный), 'w' (белый);
  • цвет в формате RGB, задаваемый вектором из трех элементов [R G B], причем R,G,B могут меняться от 0 до 1 для задания интенсивности, например [1 0 0] соответствует предопределенному цвету 'r', а [0.9 0.9 0.9] - светло-серому.

LineStyle - стиль линии рамки вокруг текста. Значения:

  • '-' (сплошная)
  • '-' (штриховая)
  • ':' (пунктирная)
  • '-.' (штрихпунктирная)
  • 'none' (нет линии)

LineWidth - толщина рамки вокруг текстового объекта. Значение - число, задающее толщину рамки в пикселях.

BackgroundColor - цвет фона текстового объекта. Значения:

  • 'none' - по умолчанию нет выделения текста цветом;
  • один из предопределенных цветов: 'r' (красный), 'g' (зеленый), 'b' (синий), 'c' (циан), 'm' (магента), 'y' (желтый), 'k' (черный), 'w' (белый);

цвет в формате RGB, задаваемый вектором из трех элементов [R G B], причем R,G,B могут меняться от 0 до 1 для задания интенсивности, например [1 0 0] соответствует предопределенному цвету 'r', а [0.9 0.9 0.9] - светло-серому.

Свойства, отвечающие за видимость объекта и его удаление

Visible - видимость текстового объекта. Значения:

  • 'on' (по умолчанию) - объект виден;
  • 'off' - объект скрыт;

EraseMode - способ удаления текстового объекта. Значения:

  • 'normal' (по умолчанию) - перерисовка всего того, что было под текстовым объектом;
  • 'none' - при удалении или перемещении текстовый объект не стирается, однако при печати графического окна он не напечатается;
  • 'xor' - при выводе текстового объекта выполняется исключающее "или" с тем, что находится под объектом.
  • 'background' - при удалении, текстовый объект рисуется цветом осей, или графического окна, если цвет осей установлен в 'none'.

Свойства, использующиеся при программировании операций с текстовым объектом

Parent - указатель на предок текстового объекта, которым могут быть: оси, группированный объект hggroup или hgtransform.

Children - всегда пустой массив, т.к. у текстового объекта нет потомков, он последний в иерархии графических объектов.

Tag - тэг или имя объекта. Значение - строка или строковая переменная. Используется, например, при поиске объекта функциями findobj, findall, или при получении указателей сразу на все объекты приложения с графическим интерфейсом при помощи функции guihandles

handles = guihandles(object_handle)

Возвращает структуру handles, названия полей которой совпадает с тэгами объектов, а их значения являются указателями на сами объекты.

Type - тип текстового объекта. Свойство доступно только для чтения, его значением всегда является строка 'text'.

UserData - некоторые данные, которые можно связать с текстовым объектом. Значение - массив.

ButtonDownFcn - событие, которое возникает при щелчке мышью по объекту. Значение - указатель на функцию обработки события, или строка с командой MATLAB или m-файлом.

При программировании события ButtonDownFcn часто следует различать щелчок левой кнопкой мыши, двойной щелчок, щелчок левой кнопкой мыши с удержанием клавиш Shift или Ctrl. Это делается при помощи свойства SelectionType графического окна, которое содержит информацию о нажатой клавише при щелчке мышью в пределах графического окна.

Примеры программирования события ButtonDownFcn:

Пример 1. Текст, который увеличивается в размере на 1 пункт при щелчке мышью по нему.

Пример 2. Текст, который увеличивается в размере на 1 пункт при щелчке мышью по нему и уменьшается на 1 пункт при щелчке мышью по нему с удержанием клавиши Shift.

Selected - выделение текстового объекта. Значения:

  • 'on' - текстовый объект выделен, вокруг него рисуется рамка с маркерами если свойство SelectionHighlight текстового объекта так же принимает значение 'on'.
  • 'off' (по умолчанию) - текстовый объект не выделен

SelectionHighlight - рисовать ли вокруг текстового объекта рамку с маркерами при выделении.

  • 'on' (по умолчанию) - рамка будет рисоваться
  • 'off' - рамка рисоваться не будет

Editing - разрешение на редактирование текстового объекта пользователем после щелчка по нему левой кнопкой мыши. Значения:

  • 'on' - разрешить редактирование;
  • 'off' (по умолчанию) - запретить редактирование.

Команда

text('Position', [0.3 0.3], 'String', 'Edit me','FontSize',15, 'Editing','on')

создает текстовый объект со текстом 'Edit me', в конце которого мигает курсор. Этот текстовый объект можно редактировать, для начала новой строки следует нажать клавишу Enter. Однако, нажатие на клавишу Esc или щелчок мышью вне текстового объекта приводят к тому, что свойство Editing принимает значение 'off' и больше текстовый объект таким образом редактировать нельзя. Для того, чтобы текстовый объект можно было редактировать, например, после щелчка левой кнопкой мыши по нему, следует с событием ButtonDownFcn связать соответствующую команду, которая присваивает свойству Editing текстового объекта значение 'on', например

ht=text('Position', [0.3 0.3], 'String', 'Edit me','FontSize',15)
set(ht, 'ButtonDownFcn', 'set(ht, ''Editing'', ''on'')')

В этом примере используется по два апострофа в команде set(ht, ''Editing'', ''on''), т.к. она должна быть строкой при задании значения свойству ButtonDownFcn. Для того, чтобы в качестве символа строки указать апостроф, следует ставить два идущих подряд апострофа, иначе будет ошибка. При задании такой строки

'set(ht, 'Editing', 'on')'

MATLAB посчитает, что она закончилась после 'set(ht, ' и выведет ошибку

??? set(ht, 'ButtonDownFcn', 'set(ht, 'Editing', 'on')')
              		                         |
Error: Unexpected MATLAB expression.

Для того, чтобы текст можно было редактировать двойным щелчком мыши, следует при программировании события ButtonDownFcn учесть значение свойства SelectionType графического окна, которое содержит информацию о нажатой клавише при щелчке мышью в пределах графического окна.

Пример 3. Редактирование текста при помощи обработки события ButtonDownFcn текстового объекта.

CreateFcn - событие, возникающее при создании текстового объекта. Значение - команда MATLAB или указатель на функцию обработки события. Значение этому свойству следует задавать во время создания текстового объекта, т.е. во входных аргументах функции text, например:

figure
axes
text('Position', [0.3, 0.3], 'String', 'TEXT', 'CreateFcn',...
    'msgbox(''A text object has been created'')')

Указание значения этого свойства после создания текстового объекта бесполезно.

Если при создании текстового объекта всегда требуется выполнять одинаковые действия, то следует установить свойству DefaultTextCreateFcn корневого объекта (указатель на корневой объект равен нулю) нужное значение, т.е. соответствующую команду MATLAB или указатель на нужную функцию, например

 
set(0,'DefaultTextCreateFcn', 'set(gcf,''Pointer'',''crosshair'')')

приводит к тому, что при создании текстовых объектов курсор мыши примет форму перекрестия. Для отказа от предварительных действий перед созданием текстовых объектов достаточно выполнить команду

set(0,'DefaultTextCreateFcn', '')

DeleteFcn - событие, которое возникает при удалении текстового объекта. Значение - команда MATLAB или указатель на функцию обработки события.

Пример 4. Выделение и удаление текстового объекта.

BusyAction - свойство определяет, что происходит с обработкой тех событий, которые пытаются прервать выполняющуюся функцию обработки события текстового объекта. Текстовый объект имеет три свойства, значением которых может быть команда MATLAB, или функция обработки события: ButtonDownFcn, CreateFcn и DeleteFcn. Этот процесс определяется так же значением свойства Interruptible текстового объекта. Если оно принимает значение 'on', то прерывание происходит сразу же. Если свойству Interruptible текстового объекта установлено значение 'off', то тогда все определяется значением свойства BusyAction:

  • 'cancel' - отменить событие, которое пытается прервать работу функции, в данный момент обрабатывающей некоторое событие текстового объекта.
  • 'queue' (по умолчанию) - поставить в очередь событие, которое пытается прервать работу функции, в данный момент обрабатывающей некоторое событие текстового объекта, и по его завершении обработать событие в очереди.

Interruptible - свойство которое отвечает за обработку событий, возникающих во время обработки некоторого события текстового объекта. Текстовый объект имеет три свойства, значением которых может быть команда MATLAB, или функция обработки события: ButtonDownFcn, CreateFcn и DeleteFcn. Значения:

  • 'on' (по умолчанию) - прервать выполнение функции или команды обработки текущего события текстового объекта;
  • 'off' - не прерывать выполнение функции или команды обработки текущего события текстового объекта, в зависимости от значения свойства BusyAction либо поставить его в очередь на выполнение, либо отменить.

Пример 5. Прерывание события текстового объекта.

HandleVisibility - управление доступом к указателю на текстовый объект из командной строки и приложения с графическим интерфейсом. Значения:

  • 'on' (по умолчанию) - указатель на объект находится в массиве, который является значением свойства Children осей, содержащих текстовый объект.
  • 'callback' - указатель на текстовый объект становится доступным только в функции обработки событий объектов.
  • 'off' - указатель на текстовый объект всегда недоступен, его нет в массиве, , который является значением свойства Children осей, содержащих текстовый объект. Объект недоступен для функций, которые просматривают иерархию объектов, или обращаются к свойствам объекта по указателю: get, findobj, gca, gcf, gco, newplot, cla, clf и close.

Для того, чтобы сделать видимыми указатели на все объекты, включая и те, свойство HandleVisibility которых принимает значение 'off' или 'callback', следует установить свойству ShowHiddenHandles корневого объекта значение 'on':

set(0, 'ShowHiddenHandles', 'on')

Это не повлияет на значения свойства HandleVisibility объектов. Если по каким-то причинам свойство ShowHiddenHandles корневого объекта было установлено в значение 'on', то после лучше вернуть ему значение 'off'

set(0, 'ShowHiddenHandles', 'on')

для предотвращения случайного изменения текстовых объектов со скрытыми указателями.

Если свойство HandleVisibility принимает значение отличное от 'on', но указатель на текстовый объект известен, то им можно пользоваться для изменения свойств текстового объекта, например:

ht=text('Position', [0.2 0.2], 'String', 'abc')
set(ht, 'HandleVisibility', 'off')
set(ht, 'Color', 'r')

HitTest - свойство, определяющее, будет ли текстовый объект становиться текущим при щелчке по нему мышью. Значения:

  • 'on' (по умолчанию) - текстовый объект становится текущим после щелчка по нему мышью, указатель на него возвращается функцией gco и, также, является значением свойства CurrentObject графического окна, на котором расположены содержащий текстовый объект оси.
  • 'off' - текстовый объект не становится текущим после щелчка мышью по нему, вместо этого тот объект, который находится за текстовым, становится текущим.

Обычно свойство HitTest применяется для того, чтобы обработать щелчок мышью по осям или поверхности (линии, рисунку и т.д.), которые содержат другие текстовые объекты, закрывающие часть содержимого.

Пример 6. Расстановка маркеров с подписями на линии.

UIContextMenu - указатель на контекстное меню текстового объекта.

Пример 7. Программирование контекстного меню текстового объекта.


Поиск по сайту:

Система Orphus

Яндекс.Метрика