Ich bin nicht ganz sicher, was Sie versuchen, zu tun, aber ein kleines Beispiel finden Sie unten. Der Trick ist, mit Callback-Funktionen:
http://de.mathworks.com/help/matlab/creating_plots/callback-definition.html
function test()
global img1;
global img2;
global img3;
img1 = imread(['icons' filesep 'calculation.png']);
img2 = imread(['icons' filesep 'calibration.png']);
img3 = imread(['icons' filesep 'gearwheels.png']);
fh=figure;
subplot(2,1,1),plot(rand(20));
subplot(2,1,2),plot(rand(10));
set(fh,'windowscrollWheelFcn', @showImage);
set(fh,'Windowbuttonupfcn', 'gca');
end
function showImage(~,~)
persistent ind;
global img1;
global img2;
global img3;
if isempty(ind) || ind > 3
ind = 1;
else
ind = ind + 1;
end;
switch ind
case 1
imshow(img1);
case 2
imshow(img2);
case 3
imshow(img3);
otherwise
imshow(img1);
end;
end
Ich habe eine Figur mit zwei Handlungsstränge. Wenn Sie die Maustaste auf einen der Nebenhandlungen drücken, wird das eine Auswahl:
set(fh,'Windowbuttonupfcn', 'gca');
Wenn Sie scrollen mit dem Mausrad showImage
die Funktion aufgerufen wird:
set(fh,'windowscrollWheelFcn', @showImage);
Diese Funktion macht die ganze Arbeit für dich. Im Beispiel verwenden ich eine persistente Variable durch die geladenen Bilder zu wechseln, die in Funktion test
und gespeichert in drei globalen Variablen geladen werden.
Es ist auch möglich, ein zusätzliches Argument geben showImage
, funktioniert der Index des angeforderten Bildes zu übergeben:
set(fh,'windowscrollWheelFcn', {@showImage, ind});
function showImage(~,~,ind)