如何在指南gui中将函数设置为WindowScrollWheelFcn

时间:2016-06-30 11:04:41

标签: matlab-guide mousewheel

我在matlab(R2015a)中创建了指南gui(不是以编程方式)。它包含一个用于加载图像和轴以显示图像的按钮。当我加载图像时,我想通过鼠标滚动更改轴图像。

有没有想法通过鼠标滚轮改变图片?

问候。

1 个答案:

答案 0 :(得分:0)

我不太确定,你想做什么,但在下面找一个小例子。 诀窍是使用回调函数:

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

我创建了一个包含两个子图的图。当您在其中一个子图上按下鼠标按钮时,会选择一个:

set(fh,'Windowbuttonupfcn', 'gca');

使用鼠标滚轮滚动时,将调用函数showImage

set(fh,'windowscrollWheelFcn', @showImage);

此功能可以为您完成所有工作。 在示例中,我使用持久变量来切换加载的图像,这些图像在函数test中加载并存储在三个全局变量中。

还可以为函数showImage提供一个额外的参数,以移交所请求图像的索引:

set(fh,'windowscrollWheelFcn', {@showImage, ind}); function showImage(~,~,ind)