请问在matlab中,set(h,'ButtonDownFcn',@buttonDownCallback)是什么意思?@buttonDownCallback是什么?
下面是源代码。这个代码主要的功能是得到坐标的值。
function mytestfunction()
f=figure;set(f,'WindowButtonDownFcn',@mytestcallback)function mytestcallback(hObject,~)
pos=get(hObject,'CurrentPoint');
disp(['You clicked X:',num2str(pos(1)),', Y:',num2str(pos(2))]);
h为前边程序设置的某一对象
ButtonDownFcn为这一对象的一个属性,即单击触发相应的函数
@buttonDownCallback,为触发的相对应的函数,这个是需要编写的
例如
%显示图像
h=image(data); 或者为 h=imshow(data);
%设置图像的单击事件函数 myCallback为自定义函数
set(h,'ButtonDownFcn',{@myCallback,handles});
注意:
MATLAB 的Figure 中windowButtonDownFcn和ButtonDownFcn的区别 1、figure的windowbuttondown函数是当鼠标在figure中点击时(无论是左键还是右键),程序调用的回调函数。这时,程序不管鼠标是在那一个控件的区域内,只要点击,都调用该函数;
2、axes或其它控件的ButtonDownFcn函数是当控件位于该控件的区域内时,点击时所调用的函数。
ButtonDownFcn函数是当在控件上按下鼠标按键(左键、右键或中间键)时调用的函数。但对于pushbutton控件,当在按钮上按下鼠标左键时,调用的是callback,而不调用ButtonDownFcn。但如果在按钮的周围大约5个像素点的范围内点击鼠标左键时,ButtonDownFcn就会被调用.
MATLAB GUI axes的ButtondownFCN无效的问题
2、axes或其它控件的ButtonDownFcn函数是当控件位于该控件的区域内时,点击时所调用的函数。matlab如何区分控件呢?是通过控件的句柄--handle来区别的。
初次建立axes控件时,系统获得一个句柄,这个句柄是和该axes是对应的;当显示了图片以后,原先的axes改变了(包括axes轴的x、y轴的范围,比例等),再点击axes轴,这时是点击的图片,并不是原先的axes了,所以ButtonDownFcn当然不会被调用了,但windowbuttondown照样被调用。
3、解决的办法是:在用imshow或其它函数显示完图像时,用h=imshow等取得显示的图像的句柄,定义图像对象的ButtonDownFcn回调函数为自己定义的函数。