我用gui写了一个小的MATLAB程序。在gui里面,我有一个用户应该能够选择两个点的情节。为此,我使用函数ginput,它创建一个十字准线供选择。不幸的是,十字准线延伸了整个窗口,并不局限于情节,这看起来不太好并且让用户感到困惑。如何将十字准线仅限于情节区域?
答案 0 :(得分:4)
尝试使用不会创建十字准线的getpts;使用getpts,您还可以指定希望用户选择的轴,如
[x,y] = getpts(ax);
getpts的唯一问题是没有办法将它限制在两个点上。但它确实有一个很好的功能,即用户可以通过点击DELETE撤消点选择,并通过点击ENTER确认点。
密切关注ginput文档,您描述的行为是有意的,显然是不可避免的
这
doc ginput
单击轴使该轴成为当前轴。即使在调用ginput之前设置当前轴,无论您单击哪个轴都成为当前轴,而ginput将返回相对于该轴的点。如果从多个轴中选择点,则返回的结果将相对于它们来自的轴的坐标系。
答案 1 :(得分:2)
尝试将所需十字准线作为输入的this slightly modified ginput script on File Exchange。因为它是从ginput rev修改的。 5.32.4.4,我建议你从最新版本开始新的。
答案 2 :(得分:1)
尝试ginputax。它完全符合你的要求。此函数用作ginput,但它适用于GUI。
以下是如何使用它的示例。 http://www.mathworks.com/matlabcentral/fileexchange/39799