目录
2.创建缩放模式对象并将缩放约束到 x 轴。使用圆点表示法设置属性。
3.创建四个坐标区作为子图,并通过为每个坐标区句柄设置不同的属性来设置不同的缩放样式:
6.通过对上下文菜单编码,用户可以通过右击来切换到平移模式。
一、zoom函数功能
启用或禁用缩放或者按比例放大图像
二、详解
1.zoom on
zoom on %启用缩放模式。
在图窗中启用缩放模式时,如果在光标处于坐标区内时按下鼠标按键,将会放大或缩小鼠标下面的点。
缩放将会改变坐标区范围。
2.zoom off
zoom off %禁用缩放模式。
从 R2018b 开始,默认情况下启用某些缩放交互,而不管缩放模式如何设置。
如果要禁用这些默认交互,请使用 disableDefaultInteractivity
函数。
3.zoom out
zoom out %将绘图恢复为其初始缩放设置。
4.zoom reset
zoom reset %将当前缩放设置记作初始缩放设置。
启用交互式 zoom
模式后,对 zoom out
的后续调用或双击都将使绘图恢复到此缩放级别。
5.zoom
在禁用和启用缩放模式之间切换(恢复最近使用的缩放工具)。
6.zoom x/yon
zoom xon
和 zoom yon
分别为 x 和 y 轴设置 zoom on
。
7.zoom
(factor)
zoom(factor)
放大或缩小指定的缩放因子,而不影响交互式缩放模式。
大于 1 的值将按该数量放大,大于 0 且小于 1 的数将按 1/factor
缩小。
8.zoom(fig, option)
zoom(fig, option)
使用此语法,可在当前图窗以外的图窗中指定上述任意选项。
9.h = zoom(figure_handle)
h = zoom(figure_handle)
返回图窗 figure_handle
的缩放模式对象,以自定义模式的行为。
三、示例
1.绘制一个图形并启用缩放模式
plot(1:10);
zoom on
% zoom in on the plot
2.创建缩放模式对象并将缩放约束到 x 轴。使用圆点表示法设置属性。
plot(1:10);
h = zoom;
h.Motion = 'horizontal';
h.Enable = 'on';
% zoom in on the plot in the horizontal direction.
3.创建四个坐标区作为子图,并通过为每个坐标区句柄设置不同的属性来设置不同的缩放样式:
ax1 = subplot(2,2,1);
plot(1:10);
h = zoom;
ax2 = subplot(2,2,2);
plot(rand(3));
setAllowAxesZoom(h,ax2,false);
ax3 = subplot(2,2,3);
plot(peaks);
setAxesZoomMotion(h,ax3,'horizontal');
ax4 = subplot(2,2,4);
contour(peaks);
setAxesZoomMotion(h,ax4,'vertical');
% Zoom in on the plots
4.为要触发的缩放模式对象创建 buttonDown 回调。
将以下代码复制到一个新文件,执行代码并观察缩放行为。使用圆点表示法设置属性。
function demo
% Allow a line to have its own 'ButtonDownFcn' callback.
hLine = plot(rand(1,10));
hLine.ButtonDownFcn = 'disp(''This executes'')';
hLine.Tag = 'DoNotIgnore';
h = zoom;
h.ButtonDownFilter = @mycallback;
h.Enable = 'on';
% mouse click on the line
%
function [flag] = mycallback(obj,event_obj)
% If the tag of the object is 'DoNotIgnore', then return true.
objTag = obj.Tag;
if strcmpi(objTag,'DoNotIgnore')
flag = true;
else
flag = false;
end
5.为要触发的缩放模式对象的 buttonDown 前和后事件创建回调。
将以下代码复制到一个新文件,执行代码并观察缩放行为。使用圆点表示法设置属性。
function demo
% Listen to zoom events
plot(1:10);
h = zoom;
h.ActionPreCallback = @myprecallback;
h.ActionPostCallback = @mypostcallback;
h.Enable = 'on';
%
function myprecallback(obj,evd)
disp('A zoom is about to occur.');
%
function mypostcallback(obj,evd)
newLim = evd.Axes.XLim;
msgbox(sprintf('The new X-Limits are [%.2f %.2f].',newLim));
6.通过对上下文菜单编码,用户可以通过右击来切换到平移模式。
使用圆点表示法设置属性
figure
plot(magic(10))
hCMZ = uicontextmenu;
hZMenu = uimenu('Parent',hCMZ,'Label','Switch to pan',...
'Callback','pan(gcbf,''on'')');
hZoom = zoom(gcf);
hZoom.ContextMenu = hCMZ;
zoom('on')