Я новичок в MATLAB, и я добавил логотип в графический интерфейс, используя UIpanel и метод осей. Но поскольку это оси, по которым отображается мое изображение, есть курсор Zoom (увеличительное стекло), который я хотел бы удалить, но не могу. Когда я создал оси внутри Uipanel, я не получил функции createfuncn и обратного вызова, которые обычно генерируются автоматически, так как мне поступить с этим. Заранее спасибо
Удалить масштабирование с осей графического интерфейса в Matlab
Ответы (2)
Вы можете отключить масштабирование с помощью zoom off
или zoom(f, 'off')
, где f
— это дескриптор фигуры вашего графического интерфейса.
Обратите внимание, что масштабирование включается или выключается на уровне фигуры, а не отдельных осей, поэтому вы не можете напрямую включать масштабирование для одного набора осей.
Я нашел возможное решение, которое позволяет включать/отключать масштабирование для определенных выбранных осей:
Решение заключается в использовании функции:
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) Нажата кнопка "Включить масштабирование по левым осям", масштаб изображения
(*) Кнопки также включаются/выключаются.
Надеюсь это поможет.