我的程序任务很简单,就是当在一幅图像上单击的时候,( 可编辑文本框 )实时显示当前鼠标单击点的坐标。
1、figure的windowbuttondown函数是当鼠标在figure中点击时(无论是左键还是右键),程序调用的回调函数。这时,程序不管鼠标是在那一个控件的区域内,只要点击,都调用该函数;
2、axes或其它控件的ButtonDownFcn函数是当控件位于该控件的区域内时,点击时所调用的函数。matlab如何区分控件呢?是通过控件的句柄--handle来区别的。
初次建立axes控件时,系统获得一个句柄,这个句柄是和该axes是对应的;当显示了图片以后,原先的axes改变了(包括axes轴的x、y轴的范围,比例等),再点击axes轴,这时是点击的图片,并不是原先的axes了,所以ButtonDownFcn当然不会被调用了,但windowbuttondown照样被调用。
3、解决的办法是:在用imshow或其它函数显示完图像时,用h=imshow等取得显示的图像的句柄,定义图像对象的ButtonDownFcn回调函数为自己定义的函数。
---------------------
matlab GUI中AXES显示图像后响应buttondownfcn的问题
一旦在这个axes上显示图像之后,那个ButtonDownFcn就没有反应了
也就是在这个callback函数中的任何代码都不执行了
我调试了一下,可以解决的。方法如下:
(1)在你的GUI的OpeningFcn函数中加入如下代码: