Ссылка в моем комментарии объясняет, как прикрепить listener
к любому ( Observable ) изменению свойства, но если вас интересуют только события, вызванные действием масштабирования,Вы можете получать события, инициируемые непосредственно объектом 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
ваших осей.