Matlab Imppoint 和 Uicontrol

Posted

技术标签:

【中文标题】Matlab Imppoint 和 Uicontrol【英文标题】:Matlab Impoint and Uicontrol 【发布时间】:2014-08-28 10:33:31 【问题描述】:

我更偏向于编码方面,所以我提前为愚蠢的问题和/或糟糕的编码实践道歉。基本上,我的梦想是能够单击、放置一个压点、记录该压点的位置,然后再次单击另一个点(并记录该点的位置),直到我点击“完成”按钮。但是,我的代码是横向的。

我的按钮是使用下面的行创建的。我在代码的前面将变量 j 设置为 1,只是因为我希望能够用 CallBack 做两件事,所以我想要某种方式来指示按钮已被单击(但是,我当然是不作为一种方法附加于此)。当用户点击按钮时,我真的很想 1)新的 impoints 循环停止和 2)图像关闭。

uicontrol('Style','pushbutton','Position',[80 0 70 20],'String','Done','CallBack','j=0;');

我的 impoints 循环(删除了我认为不相关的额外内容)如下:

for k = 1:2*mboxes*nboxes
    if j == 0
        close(gcf);
        break;
    elseif j == 1
        fprintf('At line 56, j is %d and k is %d\n', j, k)
        h = impoint;
        setColor(h,'k');
        location = h.getPosition;
    end

    clear h;
end

目前,我的问题有两个。真的,三倍,但我可以勉强忍受第三个问题。问题1是我最关心的问题,我必须在我想要完成之前单击按钮,也就是说我单击按钮然后在窗口关闭之前设置另一个点。 (换句话说,它通过循环的次数比我想要的多一次,我不知道如何告诉它不要这样做。)问题 2,我确信应该告诉我它是如何循环的,是在我进行的过程中,imppoints 没有被删除(尽管 h 似乎在最后被删除了)。问题 3 很美观,但让我很恼火,在我点击我真正想要的位置之前,我一直在图像的左上角 (0,0) 得到一个蓝色的点。

任何帮助将不胜感激。 :)

【问题讨论】:

【参考方案1】:

我不确定,但我只能在这里回答而不是评论......所以我猜:

解决您的问题 2: 您的 h 未完全删除,请尝试使用 delete(h) 而不是 clear。这也应该使您的问题3

解决您的问题 1: 我假设,无论您单击什么地方,impoint 都是您的点击位置,即使您点击了按钮,所以这两个功能(获取 imppoint 和 click 事件)可能会重叠并给您该错误。也许看看 setPositionConstraintFcn 可以帮助你解决这个问题(只为你希望它工作的区域启用点击)。

【讨论】:

也许使用带有给定轴 a 的点击事件比对您来说更容易。看起来像这样:set(get(a,'Children'),'ButtonDownFcn',@clickevent,a); function clickevent(hObject,eventdata,a) h=get(a,'CurrentPoint'); end

以上是关于Matlab Imppoint 和 Uicontrol的主要内容,如果未能解决你的问题,请参考以下文章

iOS中自定义导航栏左边返回按钮和按钮不能靠左的问题

iOS UIPageControl Horizo​​ntalAlignment 不起作用

当 UISlider 值改变时会调用啥?

matlab2015b和matlab2015a有啥区别

matlab2014和matlab7.0的区别

matlab激活账户和激活序列号