Matlab Impoint和Uicontrol

时间:2014-08-28 10:33:32

标签: matlab uicontrol

我更多关于编码的no0b方面,所以我提前为愚蠢的问题和/或糟糕的编码实践道歉。基本上,我有一个梦想是能够点击,放置一个点,记录该点的位置,然后再次点击另一个点(并记录该点的位置),直到我点击"完成&#34 ;按钮。但是,我的代码是侧面的。

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

uicontrol(' Style','按钮','职位',[80 0 70 20],'字符串',&# 39;完成''回叫'' J = 0;&#39);

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

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,我确定应该告诉它关于它如何循环的一些事情,是因为我一直没有被删除(尽管h似乎最后被删除了)。问题3,这是审美但真的让我烦恼的是,在我点击我真正想要的地方之前,我在图像的左上角(0,0)不断出现蓝色的凹陷。

任何帮助都会非常值得赞赏。 :)

1 个答案:

答案 0 :(得分:0)

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

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

解决你的问题1: impoint得到你的点击位置,无论你点击我假设,即使你点击你的按钮,所以这两个函数(得到嵌入和点击事件)可能重叠并给你错误。也许看看setPositionConstraintFcn可以帮助你(只为你希望它工作的区域启用点击)。