我在Matlab中发现了GUI开发,并且在一些基本概念上遇到了困难。如果有人能帮助我,我将非常感激。
我试图使用matlab"指南"构建GUI,我所做的就是将图像加载到轴中,我想将其保存到一些全局变量中,这些变量将由我的GUI中的所有回调共享,这样我就可以在其他事件处理程序上处理此图像。
我有困难找到一种方法来做到这一点,我试图声明一些变量为"全局",但它没有工作。你能给我解释一下它是如何工作的,或者举个简单的例子吗?由于
下面是一个工作示例(使用GUIDE),它以两种不同的方式实现了您正在寻找的功能。总的来说,我更喜欢在90%的gui中使用"handles"方法。只有当我需要访问GUI之外的数据时,我才会使用全局变量。
请注意,我已经添加了"句柄"。Img = 0'内的开放函数。作为免责声明,没有来自浏览的数据验证。我也只测试了这个。gif文件,并没有考虑到最好的方式来显示图像的轴。又快又脏:)
编辑:当你复制和粘贴这些数据到一个m文件。确保将其命名为picture_loader.m。Matlab用错误的文件名对我做了一些愚蠢的事情:)
希望对你有帮助。
function varargout = picture_loader(varargin)
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @picture_loader_OpeningFcn, ...
'gui_OutputFcn', @picture_loader_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 picture_loader is made visible.
function picture_loader_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.img = 0; % Add the img data to the handle
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = picture_loader_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% --- Executes on button press in Browse.
function Browse_Callback(hObject, eventdata, handles)
global img % Store the data global
img_path = uigetfile('*.gif'); % browse for a file
img = importdata(img_path); % Load the image data
handles.img = img; % Store the img data in the handles struct
guidata(hObject, handles); % Save handles so all call backs have the updated data
% Plot the data in the axes1
axes(handles.axes1) % Select axes1 to write to
image(img.cdata) % Display the image
colormap(img.colormap) % Apply proper colormap
% --- Executes on button press in load_global.
function load_global_Callback(hObject, eventdata, handles)
global img
if isstruct(img)
axes(handles.axes1) %Select the axes1 on the gui
image(img.cdata)
colormap(img.colormap)
end
% --- Executes on button press in load_global_handle.
function load_handle_Callback(hObject, eventdata, handles)
if isstruct(handles.img)
axes(handles.axes1) %Select the axes1 on the gui
image(handles.img.cdata)
colormap(handles.img.colormap)
end
% --- Executes on button press in clear.
function clear_Callback(hObject, eventdata, handles)
cla(handles.axes1)