admin管理员组文章数量:1612060
问题描述:
在MATLAB官方帮助文件中,其中UIFigure的属性中有CurrentPoint选项,触发该属性需要通过 WindowButtonMotionFcn回调函数来实现。以二元素向量形式返回。该向量包含鼠标指针的 (x, y) 坐标,从图窗左下角开始测量。
但是在UIAxes属性里面也提到了CurrentPoint属性项,包含鼠标指针相对于坐标区的 (x,y,z) 坐标。返回的数组采用如下形式:
[xfront yfront zfront
xback yback zback]
这两点指示最后一次鼠标点击的位置。
但问题是如果在WindowButtonMotionFcn回调函数,如果你想直接利用app.UIAxes.CurrentPoint来获取坐标点时,总是会提示出错。此时如果你观察,其实UIAxes中根本没有CurrentPoint这一项。这个令人费解。
可以实现的办法
其实:官方帮助文件中也提到,程序是可以区分UIAxes内的坐标,还是UIAxes外的坐标,毕竟UIAxes控件是在UIFigure控件下的子控件。因此,可以实现的方法就是直接采用app.UIFigure.CurrentPoint获取当前的屏幕坐标点即可。而不用迷惑这个坐标是UIAxes的还是UIFigure的。
例程
function Main_UIFigureWindowButtonDown(app, event)
% % % 判断所选点目标非空,且落在当前"In&Ref"曲线上
if ~isempty(event.Source.CurrentObject) && isequal(event.Source.CurrentObject.Tag,'In&Ref')
app.ButtonDown = 1;
app.Main_UIFigure.SelectionType = 'normal';
app.a = app.Main_UIFigure.CurrentPoint;
app.Screen_X = app.a(1);
app.Screen_Y = app.a(2);
[app.MapAxis_X, app.MapAxis_Y] = SelectPoint(app);
app.X_Label.Text = num2str(app.MapAxis_X,3);
app.Y_Label.Text = num2str(app.MapAxis_Y,3);
app.Int_Flag = false;
end
end
这个程序实际上就是要在UIAxes控件内显示的波形上选点,然后映射到真实的曲线坐标上,此时对于“CurrentPoint”的争取用法就是调用app.Main_UIFigure.CurrentPoint 就可以了得到屏幕上UIAxes的当前坐标,然后再利用坐标映射程序映射到曲线坐标上即可。
问题:官方帮助文件中UIAxes属性内的CurrentPoint真正的用法是怎么回事呢,这个是我一直没有想明白的地方,还请高手指点迷津!!!
本文标签: 选点屏幕matlabcurrentpoint
版权声明:本文标题:关于MATLAB中,屏幕选点(currentpoint)的一点理解 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728627621a1166698.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论