Удалить масштабирование с осей графического интерфейса в Matlab

Я новичок в MATLAB, и я добавил логотип в графический интерфейс, используя UIpanel и метод осей. Но поскольку это оси, по которым отображается мое изображение, есть курсор Zoom (увеличительное стекло), который я хотел бы удалить, но не могу. Когда я создал оси внутри Uipanel, я не получил функции createfuncn и обратного вызова, которые обычно генерируются автоматически, так как мне поступить с этим. Заранее спасибо


person Aditya    schedule 06.05.2015    source источник
comment
вы используете код или графический интерфейс для создания фигуры? если код означает expalin с вашим кодом.   -  person Karthick Rajan    schedule 06.05.2015
comment
Я использую графический интерфейс с опцией руководства.   -  person Aditya    schedule 06.05.2015


Ответы (2)


Вы можете отключить масштабирование с помощью zoom off или zoom(f, 'off'), где f — это дескриптор фигуры вашего графического интерфейса.

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

person Sam Roberts    schedule 06.05.2015
comment
Спасибо Сэм, я привязал ваш метод, но опция Zoom все еще остается. Когда я перетаскиваю курсор на логотип, я все еще вижу увеличительное стекло. - person Aditya; 06.05.2015
comment
@Aditya Если мой ответ не решит вашу проблему, вы не должны отмечать его как принятый (вы можете не принять его, повторно щелкнув галочку). Вместо этого, возможно, отредактируйте свой вопрос, включив в него дополнительную информацию о том, что вы пробовали (включая мое предложение), чтобы у других было больше шансов найти правильный ответ. - person Sam Roberts; 06.05.2015
comment
Хорошо, да. спасибо за предложение. Я также новичок в stackoverflow: p - person Aditya; 06.05.2015

Я нашел возможное решение, которое позволяет включать/отключать масштабирование для определенных выбранных осей:

Решение заключается в использовании функции:

setAllowAxesZoom

Я создал простой графический интерфейс (с «GUIDE»), который содержит две оси и для каждой из них две кнопки для включения/отключения масштабирования.

В функции OpeningFcn на рисунке я установил масштабирование по левой оси:

h=zoom;
setAllowAxesZoom(h,handles.left_axes,false);

Когда запускается графический интерфейс и инструмент zoom выбран на панели инструментов фигуры, он не влияет на левые оси, но действует на правые оси.

В обратных вызовах кнопок setAllowAxesZoom вызывается либо для включения, либо для отключения масштабирования по соответствующим осям.

Это код всего файла графического интерфейса ".m" (я не знаю, как поделиться также файлом ".fig" (извините).

function varargout = zoom_on_off(varargin)
% ZOOM_ON_OFF MATLAB code for zoom_on_off.fig
%      ZOOM_ON_OFF, by itself, creates a new ZOOM_ON_OFF or raises the existing
%      singleton*.
%
%      H = ZOOM_ON_OFF returns the handle to a new ZOOM_ON_OFF or the handle to
%      the existing singleton*.
%
%      ZOOM_ON_OFF('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in ZOOM_ON_OFF.M with the given input arguments.
%
%      ZOOM_ON_OFF('Property','Value',...) creates a new ZOOM_ON_OFF or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before zoom_on_off_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to zoom_on_off_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help zoom_on_off

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @zoom_on_off_OpeningFcn, ...
                   'gui_OutputFcn',  @zoom_on_off_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before zoom_on_off is made visible.
function zoom_on_off_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to zoom_on_off (see VARARGIN)

% Choose default command line output for zoom_on_off
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes zoom_on_off wait for user response (see UIRESUME)
% uiwait(handles.figure1);

imshow('cubo_cubi.jpg','parent',handles.left_axes)
h=zoom;
setAllowAxesZoom(h,handles.left_axes,false);
plot(handles.right_axes,[0:.1:4*pi],sin(4*[0:.1:4*pi]))
grid(handles.right_axes,'on');


% --- Outputs from this function are returned to the command line.
function varargout = zoom_on_off_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in enable_zoom_left_axes.
function enable_zoom_left_axes_Callback(hObject, eventdata, handles)
% hObject    handle to enable_zoom_left_axes (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
h=zoom;
setAllowAxesZoom(h,handles.left_axes,true);
set(handles.disable_zoom_left_axes,'enable','on')
set(handles.enable_zoom_left_axes,'enable','off')


% --- Executes on button press in disable_zoom_left_axes.
function disable_zoom_left_axes_Callback(hObject, eventdata, handles)
% hObject    handle to disable_zoom_left_axes (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
h=zoom;
setAllowAxesZoom(h,handles.left_axes,false);
set(handles.disable_zoom_left_axes,'enable','off')
set(handles.enable_zoom_left_axes,'enable','on')


% --- Executes on button press in enable_zoom_right_axes.
function enable_zoom_right_axes_Callback(hObject, eventdata, handles)
% hObject    handle to enable_zoom_right_axes (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
h=zoom;
setAllowAxesZoom(h,handles.right_axes,true);
set(handles.disable_zoom_right_axes,'enable','on')
set(handles.enable_zoom_right_axes,'enable','off')


% --- Executes on button press in disable_zoom_right_axes.
function disable_zoom_right_axes_Callback(hObject, eventdata, handles)
% hObject    handle to disable_zoom_right_axes (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
h=zoom;
setAllowAxesZoom(h,handles.right_axes,false);
set(handles.disable_zoom_right_axes,'enable','off')
set(handles.enable_zoom_right_axes,'enable','on')

На следующих фотографиях несколько снимков графического интерфейса с включенным/отключенным масштабированием (изображение Юпитера взято из «Новых горизонтов Юпитера» НАСА/Лаборатории прикладной физики Университета Джона Хопкинса/Юго-Западного научно-исследовательского института – Национального управления по аэронавтике и исследованию космического пространства. Con licenza Pubblico dominio Tramite Wikimedia Commons — http://commons.wikimedia.org/wiki/File:Jupiter_New_Horizons.jpg#/media/File:Jupiter_New_Horizons.jpg)

1) только что открытый графический интерфейс: выбран инструмент масштабирования, отключен по левой оси, включен по правой оси

2) масштабировать по правой оси

3) Нажата кнопка "Включить масштабирование по левым осям", масштаб изображения

(*) Кнопки также включаются/выключаются.

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

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

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

Надеюсь это поможет.

person il_raffa    schedule 07.05.2015