2016-06-30 14 views

Antwort

0

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)