我评论中的链接解释了如何附加
listener
对任何人(
可观察的
)属性更改,但如果您只对缩放操作触发的事件感兴趣,则可以通过
zoom
反对。
下面是一个关于如何将事件处理程序附加到zoom对象的小演示:
function demozoomevent
% Listen to zoom events
% Sample figure and plot
plot(1:10);
% retrieve the zoom object handle
h = zoom;
% set the callback for 'before' and 'after' zoom event
h.ActionPreCallback = @myprecallback;
h.ActionPostCallback = @mypostcallback;
% Activate the zoom
h.Enable = 'on';
function myprecallback(obj,evd)
% will be executed BEFORE the zooming happens
disp('A zoom is about to occur.');
function mypostcallback(obj,evd)
% will be executed AFTER the zooming happended
newLim = evd.Axes.XLim;
msgbox(sprintf('The new X-Limits are [%.2f %.2f].',newLim));
笔记
:
这条路听不到任何变化
XLim
或相关联的
XTickLabel
,但仅限于缩放事件。如果您想使用该方法,请考虑使用
pan
对象,因为它还可以用于更改
XLim公司
你的斧头。