2016-10-07 65 views
0

如果我想讀取mose的位置,點擊一些圖片,我可以使用callback操作。在MATLAB中爲鼠標點擊回調線圖

function[]=FooBar 
Img=imshow(FooMatrix,'callback',@(s,e)ImageClickCallback()); 

function ImageClickCallback(objectHandle,~) 
    axesHandle = get(objectHandle,'Parent'); 
    coordinates = get(axesHandle,'CurrentPoint'); 
    coordinates = round(coordinates(1,1:2)) 
end 
end 

它適用於圖像,但現在我只有座標軸只有線。我試圖callback程序設置爲適當axesline,但我得到的錯誤信息

Error while evaluating uicontrol Callback

Error using hg.figure/set The name 'callback' is not an accessible property for an instance of class 'figure'.


背景:
我想創建帶線圖的GUI,例如y=f(x)使用戶能夠選擇線上的點。想法是讀取[x,y]座標的鼠標點擊並突出顯示點[f'(y),y][x,f(x)],其中f'f的反函數。像Data Cursor功能。

回答

2

callback不是線對象的有效屬性。您需要設置線對象的ButtonDownFcn屬性。

h = plot(1:3, 'ButtonDownFcn', @(s,e)ImageClickCallback() 

ButtonDownFcn屬性也可用於大多數UI元素(包括軸)

set(gca, 'ButtonDownFcn', @mycallback)