2017-01-01 37 views
1

我在我的圖形用戶界面中有4個回調函數,還有12個圖表,我把圖像放進去了。每個按鈕加載一個不同的圖像。我怎樣才能讓我的回調在每次迭代中改變情節?如何在每次迭代中製作回調更改圖?

function A_Callback(hObject, eventdata, handles) 
axes(handles.dna1) 
matlabImage = imread('a.png'); 
image(matlabImage) 
axis off 
axis image 

這是我第一次回調的代碼。其他人是一樣的(只有圖像是不同的)。事情是,我有12個地塊(從dna1到dna12)。選擇一個回調後,我想下一個選擇應該是關於下一個情節(dna2,dna3等)。我怎樣才能做到這一點?

enter image description here

當我點擊任何一個字母的形象應該被加載到第一情節回調。接下來點擊任何其他回調應該參考下一個第一個圖。

+0

我不太清楚,如果我理解你的問題。通過選擇「回調」,您的意思是在「軸」中繪製圖像。在這裏,你有4個'callbacks'和12''axes'。你想如何在你的循環中實現4'callback'到12'axis'的賦值(例如,步驟3)。你能發佈你當前GUI的圖像並在這裏分享鏈接嗎?另外,請分享您迄今寫過的用於調用您的'callbacks'的循環? – hmofrad

+0

@hmofrad我把gui放在這個問題上。然而,我沒有任何循環,因爲我不知道如何參考那裏的具體情節。首先,我試圖把它們放在一個數組中,但它似乎沒有像Java一樣工作,我仍然不能將它傳遞給回調 – soommy12

回答

1

基本上,您需要將下一軸id傳遞給您要使用的下一個callback函數。因此,嘗試以下步驟添加到您的代碼:

  1. DNA_OpeningFcn增加2組新的元素axesidaxesnumhandles結構,以確定下一axes挑:

    handles.output = hObject; 
    handles.axesid = 0; 
    handles.axesnum = 12; 
    % Update handles structure 
    guidata(hObject, handles); 
    
  2. 然後,當您嘗試設置下一個軸時,更改您的callbacks執行如下:

    handles.axesid = mod(handles.axesid, handles.axesnum) + 1; 
    ax = ['dna',int2str(handles.axesid)]; 
    axes(handles.(ax)) 
    matlabImage = imread('coins.png'); % Change the input image 
    image(matlabImage) 
    axis off 
    axis image 
    guidata(hObject, handles); 
    

確保您命名爲dna1dna12

+0

我認爲這不是我想要的。我用代碼示例更新了這個問題,你能看看這個嗎? – soommy12

+0

我的不好!我並沒有完全理解這個問題!請嘗試提供有關您的問題的更多詳細信息,正如我在上述針對您的問題的評論中所述。 – hmofrad

+0

現在,你的問題似乎更清楚了!我完全改變了答案。希望這個時間適合你! – hmofrad

相關問題