概要
axes是MATLAB中GUI界面的重要控件之一,可以用来显示图片,十分常用,本文主要介绍一下它的一些使用技巧,包括以下两个方面:
(1)axes的重要属性
(2)如何在axes显示一幅图或多幅图,并清除当前axes内容(在matlab论坛看到的,借鉴学习)
1.axes的重要属性
(1)Tag
axes的名字,一个窗口可能有多个axes,根据tag选择某一个axes进行操作。
(2)title
设置坐标轴的标题,有效值为text对象的句柄,可直接使用title函数。例如:
title(date,'color','r'):将当前坐标轴标题设为当前日期,颜色设为红色。
title({'sinx','date'}):设置2行标题,第一行为sinx,第二行为日期。
(3)Units
Units决定各种位置属性的度量单位,以窗口左下角为基准。有效值为pixels、normalized、inches、centimeters、points或characters。当设置为pixels时,以像素为单位;当设置为normalized时,以坐标为单位,左下角为[0,0],右上角为[1,1]。axes默认Units为normalized。
2.axes显示图片
(1)显示单幅图
这个很简单,在按钮的回调函数中,首先选定axes,再进行imshow操作即可。下代码为先读入图片,再显示:
[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'载入图像'); if isequal(filename,0)|isequal(pathname,0) errordlg('没有选中文件','出错'); return; else file=[pathname,filename]; end pic = imread(file); axes(handles.axes1); imshow(pic); title(date,'color','r');
(2)显示多幅图
多图显示使用subplot函数,但值得注意的是,必须把axes放在一个panel(面板)内部,否则图像会超出axes区域范围。
此外,有时希望重复利用axes,因此需要清除当前axes内容,可通过添加全局句柄变量进行判断。以下两段代码分别是显示多图和清空axes:
global h1 h2; h1=subplot(1,2,1); %记下句柄h1 x=imread('football.jpg'); imshow(x); h2=subplot(1,2,2); %记下句柄h2 y=imread('arms.jpg'); imshow(y);
global h1 h2; h = 0; if ishandle(h1) %判断h1是不是一个句柄 delete(h1);h=1; end if ishandle(h2) %判断h2是不是一个句柄 delete(h2);h=1; end if h axes('parent',handles.uipanel1) %重建一个axes end
此外,如果希望隐藏axes坐标轴信息,可以通过如下命令:
set(hObject,'xTick',[]); set(hObject,'ytick',[]);