我更關注編碼的no0b方面,所以我提前爲愚蠢的問題和/或糟糕的編碼實踐道歉。基本上,我有一個夢想,能夠點擊,放置一個點,記錄該點的位置,然後再次點擊另一點(並記錄該點的位置),直到我點擊「完成」按鈕。但是,我的代碼是橫向的。Matlab Impoint和Uicontrol
我的按鈕是用下面一行創建的。我已經在代碼中將變量j設置爲1,這是因爲我想用CallBack做兩件事,所以我想用某種方式指示按鈕已被點擊(但是,我確實作爲一種方法不附於此)。當用戶點擊按鈕時,我真的很想要1)新的隱藏點停止的循環和2)要關閉的圖像。 ('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,我相信它應該告訴我一些關於它是如何循環的,是當我走的時候,點不會被刪除(儘管h似乎在最後被刪除)。問題3雖然很美觀,但卻讓我很煩惱,因爲在點擊我真正想要的地方之前,我一直在圖像的左上角(0,0)處出現一個藍色的點。
任何幫助將是非常非常讚賞。 :)
也許使用clickevent與給定的軸你的情節會比你更容易。看起來有點像這樣: 'set(get(a,'Children'),'ButtonDownFcn',{@ clickevent,a}); 函數clickevent(hObject,eventdata,a) h = get(a,'CurrentPoint'); end' – Iris 2014-08-28 11:09:42