Кнопка увеличения и уменьшения в графическом интерфейсе

Мне нужен код для кнопок "увеличить", "уменьшить" для моего изображения. Пытаюсь использовать это, но неправильно. Пожалуйста, помогите мне. Я работаю с MATLAB Gui.

введите описание изображения здесь

function btnZoomIn_Callback(hObject, eventdata, handles)
uicontrol('Style','pushbutton','String','ZoomIn','Units','pixels',...
'Position',[90 10 60 20],'Enable','off',...
'Tag','btnZoomIn','Callback',@btnZoomIn_Callback);
h = guihandles(hObject);
set(h.btnZoomOut,'Enable','on')
data = guidata(hObject);
data.magnif = data.magnif+1;
guidata(hObject, data)

function btnZoomOut_Callback(hObject, eventdata, handles)
uicontrol('Style','pushbutton','String','Zoom Out','Units','pixels',...
'Position',[160 10 60 20],'Enable','off',...
'Tag','btnZoomOut','Callback',@btnZoomOut_Callback);

h = guihandles(hObject);
data = guidata(hObject);
if data.magnif > 1
 data.magnif = data.magnif-1;
  if data.magnif == 1

1 ответ

Если вы хотите быть дерзким по этому поводу (надеюсь, что идиома переводит...), вы можете просто указать своему профессору на встроенные кнопки зума.

Пример (не GUIDE):

f = figure;
ax = axes('Parent', f, 'Units', 'Normalized', 'Position', [0.1 0.18 0.8 0.8]);
A = imread('ngc6543a.jpg'); % Read a built-in image as a sample
image(A, 'Parent', ax);

ура

Однако, если вам нужен серьезный ответ, см. MATLAB zoom функция, которую вы можете добавить к вашим обратным вызовам кнопок.

Чтобы развернуть приведенный выше пример:

f = figure;
ax = axes('Parent', f, 'Units', 'Normalized', 'Position', [0.1 0.18 0.8 0.8]);
A = imread('ngc6543a.jpg'); % Read a built-in image as a sample
image(A, 'Parent', ax);

zoomonbutton = uicontrol('Parent', f, ...
                         'Style', 'pushbutton', ...
                         'Units', 'Normalized', ...
                         'Position', [0.1 0.02 0.4 0.1], ...
                         'String', 'Zoom On', ...
                         'Callback', 'zoom on' ...
                         );

zoomoffbutton = uicontrol('Parent', f, ...
                         'Style', 'pushbutton', ...
                         'Units', 'Normalized', ...
                         'Position', [0.5 0.02 0.4 0.1], ...
                         'String', 'Zoom Off', ...
                         'Callback', 'zoom off' ...
                         );

yay2

Где нажатие на кнопку "вкл" включает интерактивное масштабирование. Из документации:

zoom on включает интерактивное масштабирование. Когда на фигуре включено интерактивное масштабирование, нажатие кнопки мыши, когда курсор находится в пределах осей, увеличивает или уменьшает точку под мышью. Масштабирование изменяет пределы осей. При использовании режима масштабирования вы

Zoom in by positioning the mouse cursor where you want the center of the plot to be and either

    Press the mouse button or

    Rotate the mouse scroll wheel away from you (upward).

Zoom out by positioning the mouse cursor where you want the center of the plot to be and either

    Simultaneously press Shift and the mouse button, or

    Rotate the mouse scroll wheel toward you (downward).

А нажатие кнопки "выключить" отключает этот интерактивный режим.


Надеюсь, это поможет вам в правильном направлении. Я бы порекомендовал вам изучить документацию MATLAB, она очень всеобъемлющая и содержит много примеров.

Другие вопросы по тегам