Делаете патч ссылку в Matlab? - PullRequest
0 голосов
/ 18 августа 2011

Я задал несколько вопросов о создании ссылок на изображения в 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

Ответы [ 3 ]

2 голосов
/ 18 августа 2011

Вот рабочий пример (просто настройте пути файлов к тому, что действительно существует):

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 голос
/ 18 августа 2011

Обычно обратные вызовы вызываются с двумя входными аргументами, дескриптором объекта и обычно пустым eventdata.Это может привести к ошибке.Попробуйте это вместо ['winopen(''' file(j,i) ''');']:

@(u,v)winopen(@()file(j,i))
0 голосов
/ 18 августа 2011

Проблема в том, что патч был расположен за изображением [-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) ''');']);
...