大家好,提前感谢您的帮助。
我目前正在 matlab 中开发一个 UI,其中包括 4 个不同的轴来显示各种信息。基本上,我有想要显示的 MRI 数据(即 3D 数据)。我使用 1 个 ax 来显示 3 个在其中心 (axeMain) 分割数据的垂直平面,以及分别显示这些平面的 3 个其他轴 (axeX、axeY 和 axeZ)。我有一个主轴,我想让旋转成为可能(仅在主轴系统上),并且我希望能够在其他 3 个轴(只有 1 个平面的轴)上选择坐标。我也无法翻译,但这超出了我的问题范围。
所以基本上,我在所有 3 个轴上选择我的坐标(在我的飞机上使用 buttondownfcn)没有问题,在 mainAxe 上使用 rotate3D 也没有问题。但是,如果我尝试让两者同时工作,buttondownfcn 就不再起作用了。我不明白它为什么这样做(我有一些想法,但仅此而已),我不知道如何解决它。基本上我的这些功能的代码是这样的:
rotate3d(handles.axisMain);
%some other code, setting up other UI stuff
%allow selection on the 3 static plains.
set([handles.axeX,handles.axeY,handles.axeZ], 'buttondownfcn', @getCoord);
所以我的问题基本上是:为什么这两个函数不能一起工作以及如何解决这个问题,最好是用最少的代码更改?
谢谢。
编辑:这是我当前界面的打印屏幕。我希望能够仅在最后 3 个轴上选择坐标(每个轴仅包含 1 个平面)。我还希望能够仅在第一个斧头(具有 3 个平面的斧头)上旋转图像。希望这澄清。
我还要注意这一点:在我的测试之后,我发现如果激活了 rotate3D,鼠标点击根本不会出现。问题不在于我用来获取坐标本身的逻辑,而在于未触发点击事件。
另外,我知道该事件不在我尝试打印的表面上。实际代码是这样的:
set(h, 'buttondownfcn', @getCoord);
set(h,'HitTest','on');
其中 h 是表面的句柄,每个表面都以这种方式处理。