Кнопка увеличения и уменьшения в графическом интерфейсе
Мне нужен код для кнопок "увеличить", "уменьшить" для моего изображения. Пытаюсь использовать это, но неправильно. Пожалуйста, помогите мне. Я работаю с 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' ...
);
Где нажатие на кнопку "вкл" включает интерактивное масштабирование. Из документации:
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, она очень всеобъемлющая и содержит много примеров.