2013-01-09 113 views
2

我想連接兩個axes.handles,這樣當鼠標單擊一個時,另一個也會做第一個操作。我有一個外部函數執行我想要做的事情,當點擊鼠標時。我只需要更新GUI中的兩個句柄,以便在單擊一個軸時它將執行相同的操作。在Matlab中連接兩個手柄

在主界面

function testminiproj_OpeningFcn(hObject, ~, handles, varargin) 
handles.output = hObject; 
handles.done=0; 
guidata(hObject, handles); 

setappdata(0,'figureHandle',gcf); 

setappdata(gcf,'axesHandle1',handles.axes6); 

setappdata(gcf,'axesHandle2',handles.axes7); 

這是我的外部函數是回調到主界面,通過調用MOUSEMOTION;

function varargout = mousemotion(this,varargin) 

%// get the figure handle from the application main data 
figureHandle = getappdata(0,'figureHandle'); 

%// get the axes handle from the figure data 
axesHandle1 = getappdata(figureHandle,'axesHandle1'); 

%// get the axes handle from the figure data 
axesHandle2 = getappdata(figureHandle,'axesHandle2'); 

global rdata; 
if nargin<1 
    set(gcf,'WindowButtonDownFcn','mousemotion(''down'')'); 
    set(gcf,'WindowButtonUpFcn','mousemotion(''up'')'); 
    set(gcf,'WindowButtonMotionFcn',''); 

感謝任何幫助。我試圖把問題放在一邊很糟糕。希望有人能幫助。謝謝。

+0

您想寫set(axesHandles,...)而不是set(axesHandle1,..)和set(axesHandle2,..)。我對嗎? – HebeleHododo

+0

是的。我想鏈接這兩個軸手柄,以便當我對其中一個執行一個動作時,另一個也會跟隨。 – user1953847

回答

0

您可以製作一個手柄矢量。像這樣:

axesHandles = [axesHandles1; axesHandles2]; 
set(axesHandles, 'PropertyName', PropertyValue); 

這樣,兩個軸的屬性值將被設置爲PropertyValue

+0

當我嘗試使用時出現此錯誤:'使用hg.axes/set的錯誤 'WindowButtonDownFcn'不是類'axes'的實例的可訪問屬性。' – user1953847

+0

@ user1953847這是因爲'WindowButtonDownFcn'是一個[圖形屬性](http://www.mathworks.com/help/matlab/ref/figure_props.html),而不是[axes屬性](http://www.mathworks.com/help/matlab/ref/axes_props。 HTML)。 – HebeleHododo

+0

如果它是一個數字屬性,那麼我該如何去操縱它。因爲我想用axisHandles替換gcf。 – user1953847

0

您需要解決和手動找出哪些軸被點擊。

這其實並不難。 只需使用圖形和座標軸的Position屬性。

+0

它在handles.axes6中被點擊。實際上,哪些軸被點擊應該沒有關係。當其中一個被點擊時,另一個會按照相同的動作,同時對應被點擊的軸。我如何使用它? – user1953847