MATLAB新手 - 在指南

时间:2015-04-28 09:53:28

标签: matlab

我想在面板上方显示照片,我在这里看到文档:http://www.mathworks.com/help/matlab/ref/uistack.html 但它只提到如何在图中使用此功能(uistack)

我的节目到现在为止:

enter image description here

我的代码:

function varargout = panel(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @panel_OpeningFcn, ...
                   'gui_OutputFcn',  @panel_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


handles.output = hObject;


guidata(hObject, handles);





function varargout = panel_OutputFcn(hObject, eventdata, handles) 


varargout{1} = handles.output;



function pushbutton1_Callback(hObject, eventdata, handles)

k = 1;
[filename pathname]  = uigetfile({'*.*'},'File Selector','MultiSelect', 'on')
iscellstr(filename)
celldata1 = cellstr(pathname)
celldata2 = cellstr(filename)
celldata3 = strcat(celldata1,celldata2)
subplot(3,4,1),imshow(celldata3{1})
subplot(3,4,2),imshow(celldata3{2})
subplot(3,4,3),imshow(celldata3{3})
subplot(3,4,4),imshow(celldata3{4})
subplot(3,4,5),imshow(celldata3{5})
subplot(3,4,6),imshow(celldata3{6})

2 个答案:

答案 0 :(得分:1)

我要求该版本的原因是,如果您使用的是旧版本(比R2014b),则可以将BackgroundColor的{​​{1}}属性设置为“无”#39;这将使它透明。这个"功能"在R2014b之后没有工作......

uipanel

我担心其他选项需要更多关于GUI如何工作的知识 - 特别是从命令行创建GUI(而不是在GUIDE中):

%% Only HG1 (pre R2014b)
f = figure;
subplot ( 3, 3, 4 )
uipanel ( 'parent', f, 'Position', [0. 0. 0.6 0.6], 'BackgroundColor', 'none' );

注意:如果您在创建% Create a figure f = figure; % Create a uicontainer (this is a way of grouping controls together uic = uicontainer ( 'parent', f, 'position', [0.1 0.1 0.5 0.5] ); % Create an axes -> which is a child of the UICONTAINER ax = axes ( 'parent', uic, 'position', [0 0 1 1] ); % Create a uipanel -> which is a chilf of the FIGURE uipanel ( 'parent', f, 'position', [0 0 0.4 0.7] ); % Some data to plot image(rand(100)*255,'parent',ax) % Note at this point the axes is underneath the uipanel %% % Hey presto we can move the uicontainer to the top and the axes appears! :) uistack ( uic, 'top' ) 后创建uicontainer,则无需使用uipanel - 我按顺序将其显示为uistack将按堆栈顺序移动'轴' ...

答案 1 :(得分:0)

我不确定我是否正确地取消了你所需要的东西,不过......

您可以先创建指定其位置(包括大小)的面板(uipanel),然后根据需要创建任意多个轴(考虑要添加的图像数量)以便对排序进行打包棋盘(你可以通过正确设置它们的位置和大小来做到这一点)。

现在,您可以通过指定parent属性来加载轴上的图像。

在下面的示例中,我创建了一个包含三个图像的uipanel,注意耦合" axes-handle - parent property"在调用imshow。

在" pushbutton1_Callback"你的代码,你可以"自动化"这个程序。

uipanel ('position', [0 0 0.33 0.95],'title','PLOK');
a1=axes('position',[0 0 .3 .3])
a2=axes('position',[0 0.3 .3 .3])
a3=axes('position',[0 0.6 .3 .3])

imshow('curva_con_linee_verticali.jpg','parent',a1)
imshow('grafico_3d_assi_cartesiani.jpg','parent',a2)
imshow('prod_punt.jpg','parent',a3)

这就是图的样子(三个图实际上是三个jpg图像):

enter image description here

希望这有帮助。