我在matlab(R2015a)中创建了指南gui(不是以编程方式)。它包含一个用于加载图像和轴以显示图像的按钮。当我加载图像时,我想通过鼠标滚动更改轴图像。
有没有想法通过鼠标滚轮改变图片?
问候。
答案 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)