我已经提出了几个关于在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
答案 0 :(得分: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...')
答案 1 :(得分:1)
通常,使用两个输入参数调用回调,即对象的句柄和通常为空的eventdata
。这可能会导致错误。试试这个而不是['winopen(''' file(j,i) ''');']
:
@(u,v)winopen(@()file(j,i))
答案 2 :(得分: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) ''');']);