2011-08-17 38 views
0

我已經問過幾個關於在matlab中創建圖像鏈接的問題,但我希望能夠創建一個補丁鏈接。我嘗試了我在下面發佈的代碼,但沒有奏效。關於如何使這項工作的任何想法?在matlab中創建一個補丁鏈接?

patch([x2(i) x2(i+1) x2(i+1) x2(i)],[y3(j) y3(j) y3(j+1) y3(j+1)],[-0.01 -0.01 -0.01 -0.01],'r','FaceAlpha' ,.4,'EdgeColor','none','ButtonDownFcn', ['winopen(''' file(j,i) ''');']); 

function [filePath] = file(x, y) 
    filePath = strcat('C:\Documents and Settings\Sentinelle\My Documents\Prostate_082_31\sl5_knt1\sl5_',num2str(x),'-',num2str(y),'.ps'); 
end 

回答

1

通常,回調被稱爲具有兩個輸入參數,對象句柄和一個通常爲空eventdata。這可能會導致錯誤。試試這個,而不是['winopen(''' file(j,i) ''');']

@(u,v)winopen(@()file(j,i)) 
+1

實際上,你在'file(j,i)'之前不需要'@()'。 – gnovice

+0

@gnovice:你說得對。儘管如此,我還是想讓自己清楚一點,'file'是一個函數調用,而不是這個上下文中的數組(因爲我不會從名字中猜到)。 – Jonas

2

這裏是一個工作示例(只需調整文件的路徑的東西,實際存在):

BASE_DIR = 'C:\path\to\directory'; 
fcn = @(x,y) fullfile(BASE_DIR , sprintf('file_%d-%d.txt',x,y)); 

patch([-1 -1 1 1], [-1 1 -1 1], 'r', ... 
    'ButtonDownFcn',{@(o,e,f)winopen(f), fcn(2,1)}) 
axis([-2 2 -2 2]) 
title('Click the shape to open file...') 

enter image description here

+1

一個簡單的回調將是:'@(o,e)winopen(fcn(2,1))' – gnovice

+0

是真的,我只是想通過不同的方式傳遞迴調,而不是@Jonas顯示的 – Amro

0

問題是與位置它位於圖像後面[-0.01 -0.01 -0.01 -0.01]。這些鏈接被圖像掩蓋了。我將代碼更改爲[0 0 0 0],這就是我想要的方式。

patch([x2(i) x2(i+1) x2(i+1) x2(i)],[y3(j) y3(j) y3(j+1) y3(j+1)],[0 0 0 0],'r','FaceAlpha' ,.4,'EdgeColor','none','ButtonDownFcn', ['winopen(''' file(j,i) ''');']);