我正在构建一个 gui MATLAB
。这个 gui 有几个不同的axes
对象。在其中一个轴中,我使用该zoom
工具(由图形的工具栏激活)。在不同的轴对象中,我禁用了缩放:
setAllowAxesZoom(zoom_handle,axes_handle,false)
...并绘制了一些可点击的对象:
text(x,y,string,'buttondownfcn',{@func_handle, value});
这一切都很好......当鼠标位于不可缩放的绘图中时,会出现一个正常的箭头光标,如果我单击或单击并拖动,则不会发生缩放。
然而!我希望解决一个不方便的问题。我发现当缩放工具被激活时,buttondownfcn
回调不是通过点击文本对象触发的。现在我需要返回工具栏来切换缩放模式;我宁愿只是在不同的轴之间移动鼠标并以编程方式激活适当的行为。
解决此问题的最佳方法是什么?当鼠标进入我的一个轴时,我可以使用回调吗?如果是这样,我可以在该回调中打开缩放工具,并在相应的“离开事件”回调中再次将其关闭。或者有没有办法在不可缩放的绘图上传播鼠标点击事件,以便找到合适的回调来触发?还是我没有考虑的其他可能性?
编辑:我得到了这个工作。我已经发布了一个解决方案,但也会对其他解决方案感兴趣,这些解决方案可能在其他场景中效果更好,更健壮等。