2011-02-17 66 views
1

我一直在尋找,但我無法找到一個網站,顯示如何做到這一點。 我想要的是當我點擊它時能夠從軸上選擇一個對象,以便我可以改變它的顏色和東西。如何在MATLAB中選擇一個座標軸的孩子?

我只是不知道如何選擇一個孩子,我可以創建對象但不選擇它們。

我有這樣的一段代碼,我用它來創建一個行:

coord = ginput (2) 
x = coord(:,1) 
y = coord(:,2) 
hline = line(x,y) 

我不知道如果我需要在一個數組來創建對象,這樣我可以選擇編輯/刪除它們。 我相信我需要使用ButtonDownFcn,但可能我正在做一些完全錯誤的事情。

任何幫助,將不勝感激,如果我錯過任何信息,請讓我知道

感謝

回答

2

這是沒有必要使用ginput並提取座標。這由圖形窗口中的內置「偵聽器」自動完成。假設您可以在對象上使用ButtonDownFcn屬性(線條,線條系列或其他手柄圖形對象),則無誤。

嘗試創建從(0,0)的簡單線(1,1):

hline = line([0,1],[0,1]) %# create line, save handle in hline 

然後你可以設置ButtonDownFcn到,例如,函數句柄匿名函數:

set(... 
    hline, ... 
    'ButtonDownFcn', @(handle,event)(disp(['You clicked on the line!'])) ... 
); 

現在嘗試點擊該行。它應該在命令窗口中打印文本。

函數需要能夠接收至少兩個參數:(1)對象本身的句柄(行)和(2)「事件結構」。我相信當你使用線對象時,第二個參數是空的。但是你的函數仍然需要至少接收這兩個參數(即使你不使用它們)。

瞭解更多:http://www.mathworks.com/help/techdoc/ref/line_props.html

您也可以使用自己的功能(在文件命名函數):

set(... 
    hline, ... 
    'ButtonDownFcn', @(handle,event)(namedFunction(handle,event)) ... 
); 

...或者你可以使用結構數組,如果你(果然)具有其他參數beyound這兩個。

+0

有什麼像「set('selected','on')」這將允許我manupulate選定的對象? – Audel 2011-02-17 14:47:57