MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

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

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

Объект Text

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

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

'normal' (по умолчанию) - щелчок левой кнопкой мыши;
'extend' - щелчок левой кнопкой мыши с удержанием клавиши Shift или щелчок обеими кнопками мыши;
'alt' - щелчок левой кнопкой мыши с удержанием клавиши Ctrl или щелчок правой кнопкой мыши;
'open' - двойной щелчок.

Ниже приведена функция testclick с подфункцией TextClick, использующуюся для обработки события ButtonDownFcn текстового объекта. При создании графического окна в основной функции testclick зададим ему тэг win (т.е. свойству Tag графического окна присвоим значение 'win'). Это понадобится для доступа к указателю на графическое окно в подфункции TextClick при обработке щелчка мыши по текстовому объекту. Остальные операторы основной функции testclick остаются без изменений. В подфункции TextClick получим размер шрифта текстового объекта, указатель на графическое окно при помощи функции guihandles и тип щелчка, обратившись к свойству SelectionType графического окна. Далее, в зависимости от того, была или нет нажата клавиша Shift при щелчке мышью, либо уменьшаем, либо увеличиваем размер шрифта текстового объекта на 1 пункт.

function testclick
% создание графического окна с тэгом win
figure('Tag','win')
axes
text('Position', [0.3 0.3], 'String', 'Click me','FontSize',15,...
    'ButtonDownFcn', @TextClick)

function TextClick(src,evt)
% подфункция обработки события ButtonDownFcn текстового объекта

% узнаем текущий размер шрифта текстового объекта
s=get(src,'FontSize');
% получаем структуру указателей на объекты приложения
handles=guihandles(src);
% узнаем, какая была нажата клавиша
key=get(handles.win, 'SelectionType')
if isequal(key,'extend')
     % был щелчок мышью с удержанием клавиши Shift
     % уменьшаем размер шрифта на 1 пункт
     set(src,'FontSize',s-1)
else
     % был обычный щелчок мышью
     % увеличиваем размер шрифта на 1 пункт
     set(src,'FontSize',s+1)
end

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

Система Orphus

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