2016-02-10 2 views
0

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

enter image description here

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

Используйте ['zoom'] (http://www.mathworks.com/help/matlab/ref/zoom.html) в своих обратных вызовах кнопок, нет причин попробовать и изобретать колесо. – excaza

+0

Также этот код на самом деле не имеет смысла, вы создаете кнопки внутри своих обратных вызовов? – excaza

+0

В университете преподаватель дал нам задание сделать кнопку масштабирования. И никто не знает, как это сделать. Я сказал, что не знаю программы. Это просто глупая попытка :( –

ответ

3

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

A (без 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); 

yay

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

Для расширения на примере выше:

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

Где нажав 'на' кнопка включает Interactive трансфокации. От the documentation:

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, она очень всеобъемлющая и имеет много примеров.

+0

О, спасибо. Я надеюсь, что с этим можно что-то сделать. –

 Смежные вопросы

  • Нет связанных вопросов^_^