matlab改变当前图像句柄,[转载]MATLAB图像句柄学习【转】什么是图形句柄?如何获得?
Matlab为每个显⽰对象创建与之对应的句柄。通过对象句柄,我们就可以控制和调整图形的属性。如:
>> H=figure
H =
1
这条语句创建了⼀个图形对象,同时将图像句柄传递给变量H. matlab将⼀直认为显⽰器的句柄为0。
如果在创建时并未保存对象句柄,则需要使⽤⼀些语句来得到对象的句柄。
gcf
获得当前图像的句柄
gca
获得当前轴的句柄
gco
获得当前对象的句柄
findobj
查符合某些属性的所有对象的句柄
注:当对象的HandleVisibility属性设置为off 或callback时,将不能⽤findobj到。
上表中的当天对象是指被⿏标最后点击过的对象。
图形句柄是⼲什么⽤的?怎么⽤?
通过图形对象的句柄,我们可以改变图形对象的属性-⼏乎所有属性。get和
set函数⽤于查询和设置句柄图形对象的属性。
Get语法如下:
get(h)
get(h,'PropertyName')
=
get(H,)
如 >> h=figure;
>>get(h,'Position')
ans =
360 502 560 420
set的语法如下:
set(H,'PropertyName',PropertyValue,...)
如我们可以改变上⾯我们创建的图形的位置和⼤⼩:
>>
set(h,'Position',[0 0 800 600]);
这时,figure1的位置和⼤⼩就改变了。当然这只是⼀个简单的例⼦,set可以设置的属性远远多于这些。
回调
这部分功能使图形在接收到某些⽤户动作时作出反应(执⾏⽤户指定的任务)。Matlab就是将回调属性字符串传递给eval执⾏。Eval(Execute string containing MATLAB
expression)将接收到的字符串作为函数命令运⾏——真是个有意思的命令。
所有的句柄图形都有默认属性ButtonDownFcn, CreateFcn,
DeleteFcn(Figure更有默认属性CloseRequestFcn, KeyPressFcn , ResizeFcn
,WindowButtonDownFcn , WindowButtonMotionFcn
),通过修改它们的属性,matlab就将会作出相应的反应。
如:>>
get(gcf,'CloseRequestFcn')
ans =
closereq
>> class(ans)
ans =
char
我们看到,'CloseRequestFcn'属性的值是字符串closereq,于是我们可以做出⾃⼰的close回调函数。
⾸先将如下内容存为myclosereq.m放在matlab⼯作⽬录下
selection = questdlg('Close Specified
Figure?',...
'Close Request Function',...
'Yes','No','Yes');
switch selection,
case 'Yes',
delete(gcf)
case 'No'
return
end
>>
set(gcf,'CloseRequestFcn','myclosereq')
这时我们如果点击关闭按钮就可以看到提⽰是否关闭的对话框了。
当然,也可以在回调函数中加⼊其他更复杂的功能。
最后,这部分内容在Matlab帮助中的位置在
Matlab->Graphics->Handle Graphics
fontweight默认值Objects
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
GUI学习笔记:
句柄式图形常⽤函数:
(1)get(h)返回句柄值h所指定的图形对象的所有属性名称与相对应的属性值
(2)a = get(h)返回由句柄值h所指定的图形对象的属性结构数组,并且该数组的字段名称就是该对象的属性名称。
(3)a = get(0,'factory')返回所有能由⽤户设置的属性的默认定义值。
(4)a =
get(0,'FactoryObjectTypePropertyName1','FactoryObjectTypePropertyName2',...)返回指定对象类型指定的属性值,输⼊参数FactoryObjectTypePropertyName为⼀个关键词,由字符Factory与图形对象类型(如Figure)还有属性名称(如Color)组成。
a = get(0,'factoryFigureColor')返回Figure对象的Color属性值。
(5)a =
get(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName1',...)返回句柄值为h的对象指定属性的默认值。
如“DefaultFigureColor”。
(6)a = get(h,'default')列出h对象的所有属性的默认属性值
(7)a =
set(h)返回句柄值h所指定的图形对象的所有属性名称对应的可设置属性值,a为结构数组,存储对象的属性名称,其字段值为相对应的属性值。属性值中⽤{}括起来的表⽰默认值。
(8)set(h,a)使⽤指定的属性值来设置由句柄值h所指定的对象属性,a为结构数组,其字段名称为对象的属性名称,字段值为相对应的属性
值。
(9)a = set(0,'factory')返回那些⽤户可以设置默认值的所有对象的属性,同时显⽰可设置的属性值。
(10)a=set(0,'FactoryObjectTypePropertyName')返回所有对象中指定的属性名称FactoryObjectTypePropertyName的所有可能的属
性值。
(11)a = set(h,'属性名','属性值')设置句柄值为h的对象的与属性名对应的属性值。
(12)set(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName2',...)对句柄值为h的对象设置特定属性名称的属性
默认值。
(13)H = findobj;返回Root对象与其所有⼦对象的句柄值
(14)H = findobj(h);返回h变量的句柄值
(15)H = findobj(’属性名称‘,’属性值‘);依据对象的属性名称和属性值出匹配的对象句柄值。
(16)H =
findobj(ObjectHandles,’属性名称‘,’属性值‘);根据限定的对象列表出与对象的属性名称和属性值匹配的对象句柄值
(17)gcf返回当前Figure对象的句柄值
gca返回当前axes对象的句柄值
gco返回当前⿏标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab会把当前图形对象的句柄值存放在Figure的CurrentObject属性中
Figure对象的属性篇
(1).^是矩阵每个元素的幂乘,^是数的幂乘。
(2)set(handle)列出句柄值为handle的对象的所有属性
get(handle)除列出上述属性外,还列出可以设置的属性
reset(handle)将所有属性改为默认值
delete(handle)删除句柄值为handle的图形对象
(3)利⽤set(handle,‘属性名称’)获得句柄值为handle的对象的属性名称下所有可设置的属性值
set(gcf,'units):得到[ inches | centimeters | normalized | points |
{pixels} | characters ],其中,⼤括号中是默认值
(4)clf reset;将窗⼝关闭,并重新设置其属性为默认值。
(5)Closerequestfcn,有效值为字符串或函数句柄(前加@)
当关闭绘图窗⼝或离开Matlab时,就会定义Closerequestfcn定义的函数
(6)createfcn,当Matlab建⽴⼀个对象时(如为figure对象,即打开⼀个绘图窗⼝),就会触发createfcn所定义的callback程序。如
set(0,'defaultfigurecreatefcn','set(gcbo,''integerhandle'',''off'')');即设置了根对象的默认值,使每次建⽴figure对象时,都会指定⼀个⾮整数的句柄值。(在⽤户未指定句柄值时)
(7)将当前窗⼝中在键盘上按下的按键名显⽰出来。
set(gcf,'keypressfcn','get(gcf,''currentcharacter'')')
(8)color有效值为colorspec
colorspec表:
RGB 简称
[110] y_yellow
[101] m_magenta
[011] c_cyan
[100] r_red
[010] g_green
[001] b_blue
[111] w_white
[000] k_black
(9)linspace(a,b,c):a初始b结束c线性分段次数linspace(a,b)则默认100次
(10)CurrentObject:有效值为图形对象句柄值:返回绘图窗⼝内当前被⿏标选取的对象的句柄值
(11)currentPoint:有效值[x-坐标,Y-坐标]返回绘图窗⼝中最后单击⿏标的位置,⽤get(gcf,'currentpoint')就会返回当前在窗⼝中单击⿏标的位置
(12)DeleteFcn:有效值:字符串或函数句柄,删除对象(这⾥为figure)时会触发Deletefcn所定义的Callback程序。
(13)Dockcontrols:有效值为on/off,默认值on,控制窗⼝的嵌⼊效果是否可⽤。
(14)Hittest:有效值on/off,决定能否⽤⿏标选取对象为当前对象。
(15)Integerhandle:有效值on/off,决定Figure对象句柄值的类型为整数或浮点⼩数。
(16)Interruptible:有效值on/off,执⾏过程中需要中断程序⽽优先执⾏其他程序时要设该属性为on。即Interrupptible属性是⽤以控制当Callback执⾏时是否能被其他事件(如此时⿏标按下其他控制对象)⽽中断,on是会中断,off时会执⾏完当前Callback,再去执⾏其他Callback。
(17)Keypressfcn:有效值为字串或函数句柄。当⽤户在figure窗⼝中按下键盘的任意键时,就会执⾏Keypressfcn所定义的Callback程序。
figure('keypressfcn','fprintf(''当前按下键盘上的%c键n'',get(gcf,''currentcharacter''))')在这个figure窗⼝中按下键盘上的按键时就会⽴即返回对应的字符,依据这个效果就可以决定当字符键被按下时所要执⾏的操作。
当这个属性指定的值是⼀个函数句柄时,Matlab就会将这个函数视为⼀个结构,包含下列字段——character(以当前键盘上按下的按键显⽰的字符来当作结果),modifier(包含⼀个或多个识别键盘上按下按键字符名称的细胞数组(如Ctrl,Alt,Shift等),key(显⽰被按下的键)。
(18)WindowButtonDownFcn:有效值为字符串或函数句柄
当⿏标在绘图窗⼝内按下⿏标任意键时,将触发WindowButtonDownFcn所定义的Callback以产⽣相对应的操作。
(19)WindowButtonMotionFcn:有效值为字符串或函数句柄
当⿏标在绘图窗⼝内按住⿏标任意键移动,将触发WindowButtonMotionFcn所定义的Callback以产⽣相对应的操作。
(20)WindowButtonUpFcn:有效值为字符串或函数句柄
当⿏标在绘图窗⼝内释放⿏标任意键时,将触发WindowButtonUpFcn所定义的Callback以产⽣相对应的操作。
(21)CurrentAxes有效值为当前坐标轴的句柄值,返回当前的坐标轴句柄值。假设某坐标轴句柄值为a_h,可以使⽤axes(a_h)或
set(gcf,'currentaxes',a_h)这两种⽅式,制定句柄值为a_h的坐标轴为当前坐标轴。
(22)CurrentCharacter:有效值为任意字符,返回⽤户在绘图窗⼝中最后输⼊的⼀个字符,即刚在键盘上按下的字符键将存储到Currentcharacter中,⼀般于Keyppressfcn合⽤。
(23)Currentobject有效值为图形对象的句柄值,返回绘图窗⼝内当前被⿏标选取的对象的句柄值。
(24)有效值为两元素的向量,[X坐标,Y坐标]
返回绘图窗⼝中最后单击⿏标的位置,与Windowbuttonmotionfcn,Windowbuttonupfcn合⽤。使⽤get(gcf,'currentpoint')就会返回当前在窗⼝中单击⿏标的位置。
Axes对象的属性
(1)title('new','color','r');给坐标轴命名为new,红⾊
title({'this title','has 2 '});命名为两⾏的标题
(2)Units:有效值为pixels/normalized/inches/centimeters/points/characters
决定各种位置属性的度量单位,相对于窗⼝左下⾓为基准。当设置为Pixels时,以像素为单位;当设置为normalized时,以坐标为单位,屏幕的左下⾓为[0,0],右上⾓为[1.0,1.0]。
(3)grid on:在图像中显⽰⽹格。
(4)children:控制axes对象的⼦对象,即imagelightlinepatchrectanglesurface和text等对象,可通过get(gca,'children')来返回当前坐标轴的⼦对象构成的句柄值向量。
(5)字体属性:
Fontangle字体⾓度(正常normal或斜体italic/oblique)
Fontname字体名称
fontsize字体⼤⼩(单位由Fontunits决定)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。