7.3 通用图形函数命令
7.3.1 图形对象句柄命令
命令1 figure
功能 创建一个新的图形对象。图形对象为在屏幕上单独的窗口,在窗口中可以输出图形。
用法 figure 用缺省的属性值创建一个新的图形对象。
figure(\'PropertyName\',PropertyValue,…) 对指定的属性PropertyName用指定的属性值PropertyValue(属性名与属性值成对出现)创建一个新的图形窗口,对于那些没有指定的属性,则用缺省值。属性名与有效的属性值见下表。
figure(h) 1. 若h为一个已经存在的图形的句柄,则figure(h)使由h标记的图形成为当前图形,使它可见,且在屏幕上把它显示到所有图形之前。当前图形为图像输出的地方。
2. 若h不是已经存在图形的句柄,但是为一整数,则该命令生成一图形窗口,同时把该窗口的句柄赋值为h;若h不是一图形窗口的句柄,也不是一整数,则返回一错误信息。
h = figure(…) 返回图形窗口对象的句柄给h。
表7-10
属性名 |
属性说明 |
有效属性值 |
窗口位置 |
||
Position |
图形窗口的位置与大小 |
有效值:四维向量[left,bottom, width,height] 缺省值:决定于显示 |
Units |
用于解释属性Position的单位 |
有效值:inches(英寸) centimeters(厘米) normalized(标准化单位,认为窗口为一长宽都是1) points(点) pixels(像素) characters(字符) 缺省值:pixels |
指定类型与外在显示 |
||
Color |
窗口的背景颜色 |
有效值:ColorSpec(有效的颜色 参数) 缺省值:取决于颜色表(参见命令colordef) |
Menubar |
转换图形窗口菜单条的“开”与“关” |
有效值:none、figure 缺省值:figure |
Name |
显示图形窗口的标题 |
有效值:任意字符串 缺省值:‘’(空字符串) |
NumberTitle |
标题栏中是否显示’Figure No. n’,其中n为图形窗口的编号 |
有效值:on、off 缺省值:on |
Resize |
指定图形窗口是否可以通过鼠标改变大小 |
有效值:on、off 缺省值:on |
SelectionHighlight |
当图形窗口被选中时,是否突出显示 |
有效值:on、off 缺省值:on |
Visible |
确定图形窗口是否可见 |
有效值:on、off 缺省值:on |
WindowStyle |
指定窗口为标准窗口还是典型窗口 |
有效值:normal(标准窗口)、 modal(典型窗口) 缺省值:normal |
控制色图 |
||
Colormap |
图形窗口的色图 |
有效值:m*3阶的RGB颜色矩阵 缺省值:jet色图 |
Dithermap |
用于真颜色数据以伪颜色显示的色图 |
有效值:m*3阶的RGB颜色矩阵 缺省值:有所有颜色的色图 |
DithermapMode |
是否使用系统生成的抖动色图 |
有效值:auto、manual 缺省值:manual |
FixedColors |
不是从色图中获得的颜色 |
有效值:m*3阶的RGB颜色矩阵 缺省值:无(只读模式) |
MinColormap |
系统颜色表中能使用的最少颜色数 |
有效值:任一标量 缺省值:64 |
ShareColors |
允许MATLAB共享系统颜色表中的颜色 |
有效值:on、off 缺省值:on |
指定透明度 |
||
Alphamap |
图形窗口的α色图,用于设定透明度。 |
有效值:m*1维向量,每一分量在[0 1]之间 缺省值:64*1维向量 |
指定渲染模式 |
||
BackingStore |
打开或关闭屏幕像素缓冲区 |
有效值:on、off 缺省值:on |
DoubleBuffer |
对于简单的动画渲染是否使用快速缓冲 |
有效值:on、off 缺省值:off |
Renderer |
用于屏幕和图片的渲染模式 |
有效值:painters、zbuffer、OpenGL 缺省值:系统自动选择 |
关于图形窗口的一般信息 |
||
Children |
显示于图形窗口中的任意对象句柄 |
有效值:句柄向量
|
FileName |
命令guide使用的文件名 |
有效值:字符串 |
Parent |
图形窗口的父对象:根屏幕 |
有效值:总是0(即根屏幕) |
Selected |
是否显示窗口的“选中”状态 |
有效值:on、off 缺省值:on |
Tag |
用户指定的图形窗口标签 |
有效值:任意字符串 缺省值:\' \'(空字符串) |
Type |
图形对象的类型(只读类型) |
有效值:\'figure\' |
UserData |
用户指定的数据 |
有效值:任一矩阵 缺省值:[](空矩阵) |
RendererMode |
缺省的或用户指定的渲染程序 |
有效值:auto、manual 缺省值:auto |
关于当前状态的信息 |
||
CurrentAxes |
在图形窗口中的当前坐标轴的句柄 |
有效值:坐标轴句柄 |
CurrentCharacter |
在图形窗口中最后一个输入的字符 |
有效值:单个字符 |
CurrentOject |
图形窗口中的当前对象的句柄 |
有效值:图形对象句柄 |
CurrentPoint |
图形窗口中最后单击的按钮的位置 |
有效值:二维向量[x-coord, y-coord] |
SelectionType |
鼠标选取类型 |
有效值:normal、extended、alt、open |
回调程序的执行 |
||
BusyAction |
指定如何处理中断调用程序 |
有效值:cancel、queue 缺省值:queue |
ButtonDownFcn |
当在窗口中空闲点按下鼠标按钮时,执行的回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
CloseRequestFcn |
当执行命令关闭时,定义一回调程序 |
有效值:字符串 缺省值:closereq |
CreateFcn |
当打开一图形窗口时,定义一回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
DeleteFcn |
当删除一图形窗口时,定义一回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
Interruptible |
定义一回调程序是否可中断 |
有效值:on、off 缺省值:on(可以中断) |
KeyPressFcn |
当在图形窗口中按下一键时,定义一回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
ResizeFcn |
当图形窗口改变大小时,定义一回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
UIContextMenu |
定义与图形窗口相关的菜单 |
有效值:属性UIContrextmenu的句柄 |
WindowButtonDownFcn |
当在图形窗口中按下鼠标时,定义一回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
WindowButtonMotionFcn |
当将鼠标移进图形窗口中时,定义一回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
WindowButtonUpFcn |
当在图形窗口中松开按钮时,定义一回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
访问对象的控制 |
||
IntegerHandle |
指定使用整数或非整数图形句柄 |
有效值:on、off 缺省值:on(整数句柄) |
HandleVisiblity |
指定图形窗口句柄是否可见 |
有效值:on、callback、off 缺省值:on |
HitTest |
定义图形窗口是否能变成当前对象(参见图形窗口属性CurrentObject) |
有效值:on、off 缺省值:on |
NextPlot |
在图形窗口中定义如何显示另外的图形 |
有效值:replacechildren、add、replace 缺省值:add |
定义鼠标指针 |
||
Pointer |
选取鼠标记号 |
有效值:crosshair、arrow、topr、watch、topl、botl、botr、circle、cross、fleur、left、right、top、fullcrosshair、bottom 、ibeam、custom 缺省值:arrow |
PointerShapeCData |
定义鼠标外形的数据 |
有效值:16*16阶矩阵 缺省值:将鼠标设置为\'custom\'且可见 |
PointerShapeHotSpot |
设置鼠标活跃的点 |
有效值:二维向量[row,column] 缺省值:[1 1] |
例7-46
>>scrsz = get(0,\'ScreenSize\');
>>figure(\'Position\',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])
执行上面的语句,会在屏幕的左上角生成一没有任何符号的窗口。
命令2 line
功能 生成线(line)对象。命令line在当前坐标轴中生成一个线对象。用户可以指定线的颜色,宽度,类型和标记符号等其他特性。
命令line 有两种形式:
1.自动循环使用颜色和类型。当用户用非正式语法来指定矩阵坐标数据:line(X,Y,Z),Matlab将循环使用由坐标轴ColorOrder和LineStyle指定的颜色顺序和类型顺序。
2.纯粹低级操作。当用户用属性名和属性值调用命令line:
line(‘XData’,x,’YData’,y,’ZData’,z)
Matlab将在当前用缺省的颜色(参见命令colordef的使用)画出线对象。注意一点的是,用户不能在命令line的低级形式中使用矩阵数据。
用法 line(X,Y) 在当前的坐标轴中画出由向量x和y定义的线条。若x与y为同型的矩阵,则对于x,y的每一列画出一线条。
line(X,Y,Z) 在三维空间中画出由x,y,z定义的线条。
line(X,Y,Z,\'PropertyName\',PropertyValue,…) 画出由参数x,y,z确定的线条,其中对指定属性PropertyName设置为PropertyValue,其他没有指定属性用缺省值。属性LineStyle和Marker参见命令plot。
line(\'PropertyName\',PropertyValue,…) 对属性用相应的输入参数来设置而画出线条。这是命令line的低级使用形式,此时不接受矩阵参数。除了该情形,其他形式都接受矩阵参数。
h = line(…) 返回每一条线的线对象对应的句柄向量。
表7-11
属性名 |
说明 |
有效属性值 |
定义对象的数据 |
||
Xdata |
定义线条的x-轴坐标参量 |
有效值:向量或矩阵 缺省值:[0 1] |
Ydata |
定义线条的y-轴坐标参量 |
有效值:向量或矩阵 缺省值:[0 1] |
Zdata |
定义线条的z-轴坐标参量 |
有效值:向量或矩阵 缺省值:[0 1] |
定义线型与数据点标记符 |
||
LineStyle |
定义线条的类型 |
有效值:-、--、:、、-.、 none 缺省值:-(实线) |
LineWidth |
定义线条的宽度(以磅为单位) |
有效值:一标量 缺省值:0.5磅 |
Marker |
定义标记数据点的标记符号 |
有效值:13种类型之一 缺省值:none |
MarkerEdgeColor |
定义标记颜色或可填充标记的边界颜色 |
有效值: auto、none、 ColorSpec 缺省值:auto |
MarkerFaceColor |
定义封闭形标记的填充颜色 |
|
MarkerSize |
定义标记大小 |
有效值:标量(磅) 缺省值:6(磅) |
控制线条的显示 |
||
Clipping |
坐标轴矩形区域是否可剪辑 |
有效值:on、off 缺省值:on |
EraseMode |
定义显示与擦除线条的方法(对于动画显示) |
有效值:normal、none、 xor、background 缺省值:normal |
SelectionHighlight |
当线条被选中时,是否突出显示 |
有效值:on、off 缺省值:on |
Visible |
定义线条是否可见 |
有效值:on、off 缺省值:on |
Color |
定义线条颜色 |
有效值:ColorSpec |
对象访问的控制 |
||
HandleVisibility |
定义线条句柄对其他函数是否可见 |
有效值:on、off、callback 缺省值:on |
HitTest |
定义线条能否成为当前对象 |
有效值:on、off 缺省值:on |
关于线条的一般信息 |
||
Children |
线条没有子对象 |
有效值:[](空矩阵) |
Parent |
线条对象的父对象为坐标轴对象 |
有效值:坐标轴句柄 |
Selected |
是否显示线条的“选中”状态 |
有效值:on、off 缺省值:on |
Tag |
用户定义的标签 |
有效值:任一字符串 缺省值:’’(空字符串) |
Type |
图形对象的类型(只读类型) |
有效值:\'line\' |
UserData |
用户定义的数据 |
有效值:任一矩阵 缺省值:[](空矩阵) |
与回调程序执行有关的属性 |
||
BusyAction |
定义如何处理回调中断程序 |
有效值:cancel、queue 缺省值:queue |
ButtonDownFcn |
当在线条上按下鼠标时,定义一回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
CreateFcn |
当生成线条时,定义一回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
DeleteFcn |
当删除线条时,定义一回调程序 |
有效值:字符串 缺省值:\' \'(空字符串) |
Interruptible |
定义回调程序是否可中断 |
有效值:on、off 缺省值:on(可中断) |
UIContextMenu |
定义与线条相关的菜单 |
有效值:UIContextMenu的句柄 |
例7-47
>>t = 0:pi/20:2*pi;
>>hline1 = plot(t,exp(t).*sin(t),\'k\');
>>hline2 = line(t+.06,exp(t).*sin(t),\'LineWidth\',4,\'Color\',[.8 .8 .8]);
>>set(gca,\'Children\',[hline1 hline2])
生成图形为图7-46。
图7-46 命令line画的函数图
例7-48
生成随机直线图:
>>line(rand(4,2),rand(4,2),rand(4,1))
>>line(rand(1,4),rand(1,4),rand(1,4))
>>line(rand(4,1),rand(4,1),rand(4,1))
>>line(rand(2,4),rand(2,4),rand(1,4))
>>line(rand(4,2),rand(4,2),rand(4,1))
生成图形为图7-47。
命令3 patch
功能 生成补片图形对象。该命令为生成补片图形对象的低级图形函数。补片为一个或多个多边形,多边形的顶点为坐标中的点。用户可以指定补片的颜色与光照模式。
用法 patch(X,Y,C) 在当前坐标轴中增加二维带填充模式的补片。参量X,Y确定顶点的位置。若X,Y为矩阵(同型或不同型),系统按列生成多个多边形。若x,y没有定义一封闭的多边形,则命令自动地将多边形封闭。参量x与y可以定义凹的或自身交叉的多边形。可是,一个不可分隔的补片的边界自身交叉,则不能完整填充。在这种情况下,最好是将多边形分解成几个小的、自身没有交叉的多边形。参量c指定每一补片的颜色,它可以为简单的ColorSpec,每面一颜色或每一顶点一颜色。若c为三维列向量,它将被认为是一直接指定的RGB颜色。
patch(X,Y,Z,C) 生成三维的补片对象。
patch(FV) 用结构FV生成一补片。结构FV包含这些域名vertices,faces和可选的facevertecdata,这些域名对应于补片的Vertices属性、Faces属性、FaceVertexCData属性。
patch(…,C,\'PropertyName\',PropertyValue…) 在二维(X,Y)或三维(X,Y,Z)空间中对补片指定的属性PropertyName设置为PropertyValue。
patch(\'PropertyName\',PropertyValue…) 对所有指定的多个属性PropertyName设置为相应的值PropertyValue。该命令形式可以使用户免除颜色的指定,因为系统将使用缺省的面颜色和边界颜色,除非用户准确地对属性FaceColor与EdgeColor进行设置。该命令形式也允许用户通过对属性Faces与Vertices的设置来代替x-,y-与z-轴的输入。
handle = patch(…) 返回命令patch生成的补片对象句柄。
说明 函数patch不象其他的高级的区域生成函数,例如函数fill或area,它没有检测图形窗口与坐标轴的属性NextPlot的设置情形。它只是简单地在当前坐标轴中添加补片对象而已。
有两种指定颜色的补片属性名:
(1)Cdata——当指定x-,y-与z-轴坐标(XData,YData,ZData)时使用;
(2)FaceVertexCData——当指定多边形的顶点与连接矩阵时使用。
以上两个属性接受颜色数据作为索引颜色或者是真颜色(RGB)。其中索引颜色数据 能代表当前色图的直接索引或者代表映射到整个色图的线性数据的比例数值。
命令4 surface
功能 生成面对象。该命令是生成面图形对象的低级函数。面对象为由矩阵元素的A(I,j)所在的行下标I为x-坐标,所在的列下标j为y-坐标,元素值为z-坐标确定的点生成的空间多边形。
用法 surface(Z) 画出由矩阵z确定的曲面,其中z为定义在一几何矩形区域上的单值函数。
surface(Z,C) 画出颜色由c指定的、面由z指定的空间曲面。
surface(X,Y,Z) 曲面由参数x,y,z确定,颜色参数c=z,因此颜色能恰当地反映曲面的高度。
surface(X,Y,Z,C) 曲面由参数x,y,z确定,颜色由参数c确定。
Surface(x,y,Z) 参数x与y为向量,若[m,n]=size(z),则要求length(x)=n,length(y)=m,面上的点由(x(j),y(i),z(I,j))确定。
Surface(x,y,Z,C) 曲面确定如上情形,颜色由参数c确定。
surface(…\'PropertyName\',PropertyValue,…) 对指定的曲面属性PropertyName指定为PropertyValue,对曲面进行细微控制。
h = surface(…) 返回生成面对象的句柄。
命令5 image
功能 显示图片对象。该命令通过对矩阵c中每一个元素(每一元素作为引用图形色图下标或直接给出RGB值)的解释而生成一个图片对象。Image命令有两种使用格式:
1.一个调用命令newplot的高级函数,可以确定在何处放置图片与坐标轴的范围为刚好围住图片;使刚生成的图片放置在坐标轴的刻度线与格栅线之上;属性Ydir设置为rervse;属性View为[0 90]。
2.一个增加图片到当前坐标轴的低级命令,而没有调用命令newplot,在低级使用形式中,只能对指定属性进行设置操作。
用户在命令的输入参量中可以输入属性名/属性值,结构数组,细胞数组等。
用法 image(C) 把C作为一图片进行显示。C中的每一个元素指定了一个“图片”矩形中的相应部分的颜色。
image(x,y,C) 在(x,y)确定的位置上画C的元素。其中x,y都为2维矩阵,分别指定x轴与y轴的范围,其效果与image(C)相同,只不过是进行了恰当的比例缩放。
image(x,y,C,\'PropertyName\',PropertyValue,…) 该形式为指定属性名/属性值的高级使用形式,在执行该命令之前,先执行命令newplot。
image(\'PropertyName\',PropertyValue,…) 该形式为低级使用形式,它只接受属性名/属性值的输入。
handle = image(…) 返回刚生成的图片对象的句柄。用户可以从上面的任何形式的调用后获得图片句柄。
例7-49
>>load clown
>>image(X,\'CDataMapping\',\'scaled\')
>>colormap(map)
图形结果为图7-48。
命令6 uicontrol
功能 生成用户控制图形对象(用户界面控制)。也通过该命令运行图形用户界面。当对象被选中时,一般会执行相应的操作。系统支持多种控件,每一种都有不同的作用:
Ÿ 校验框——当单击检验框时,会执行一操作。该组件对于提供用户多个独立的选择是很有用的。要激活一校验框,只需用鼠标单击该组件即可,且选中的状态在组件上显示出来。
Ÿ 可编辑文本框——允许用户输入与修改文本文字的区域。当用户想把文字作为 输入时,可使用该组件。若一可编辑文本框有焦点,则单击文本框的菜单栏不会执行任何操作。因此,在单击菜单条后,语句get(edit_handle,’String’)并没有返回当前编辑框中的内容。因为系统必须执行回调函数来改变属性 string的值,即使屏幕上显示的文字已经改变。
Ÿ 框架——该组件为一封闭的、可见的、图形窗口区域。框架能使一用户图形界面中相关的控制组件能容易理解。框架没有相关的回调程序。只有控制组件能在框架中显示。框架不是透明的,因此用户定义的组件先后顺序决定了组件是否被框架遮住或可见。属性Stacking order决定了控制组件的显示顺序:第一个定义的组件最先显示,后面定义的控制组件则覆盖已经存在的组件。若用户要用一框架包围一些组件,则必须第一个定义框架。
Ÿ 列表框——显示一些项目的列表(用命令string设置),且允许用户选择一个或多个项目。属性Min与Max控制着选择的模式。属性Value显示可选择的项目与包含着字符串列表中项目的索引;对于选择了多个项目则用向量表示。在任何的能改变属性Value值的、鼠标松开的操作之后,系统MATLAB将马上执行列表框的回调函数。因此,用户有必要增加一“Done”按钮,用于推迟当要多次选择项目时的操作。在执行列表框回调函数Callback属性之前,列表框中项目的选择有单击或双击之分,对应于将图形窗口属性SelectionType设置为normal或open。
Ÿ 弹出菜单——当组件被按下时,打开且显示一选择列表(用命令string设置)。当没有打开时,该组件显示当前的选择项。该组件对于用户想给其他用户提供一系列的互斥的选择项,又不想占用太多的区域。
Ÿ 普通按钮——当该组件被按下时,将执行一操作。要激活一按钮,只需在按钮上按下鼠标按钮。
Ÿ 单选按钮——该组件与校验框相类似,但它包含几个互斥的、而且相关的选项(例如在任意时刻,只能选择一个状态)。要激活某一单选按钮,只需在该组件上按下鼠标即可。被选中的组件同时显示出来。
Ÿ 滑块——该组件允许用户通过移动某一范围之内的滑块来输入一指定的数值。用户要移动一滑块,只需在滑块上按下鼠标不放,且在滑块方向上移动;或者是在滑槽内单击鼠标;或者是单击滑块条上的箭头。当松开鼠标后,滑块所在位置将与一数值对应。用户可以设置滑块的最大值、最小值与当前值等。
Ÿ 静态文本框——显示文本行。静态文本经常作为其他控制对象标签,以提供其他用户相关信息,或者是显示一滑块的数值。其他用户不能交互地改变静态文本,因此对于静态文本,没有相关的回调函数。
Ÿ 触发按钮——当该组件被单击且显示出它们的状态(on或者off)时,控制是否执行回调函数。
用法 handle = uicontrol(
请发表评论