代码之家  ›  专栏  ›  技术社区  ›  user7431005

matlab指南,缩放时发出事件(或信号)

  •  0
  • user7431005  · 技术社区  · 6 年前

    我在Matlab中创建了一个图形用户界面 guide . 在这个GUI中有一个 axes . 我想在有人改变这张图的缩放比例时发出一个信号。

    为什么?

    我要换个 XTickLabels . 放大时 XTick 更改,我需要更新 XTickLabels公司 . 不可能硬编码 X键 值(因为您应该能够放大并获得更好的拟合 X键 价值观)。

    在C++中,QT i只会在一些缩放因子改变后简单地发出一个信号,并将其连接到一个改变 XTickLables . 我不知道如何使用MATLAB。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Hoki    6 年前

    我评论中的链接解释了如何附加 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公司 你的斧头。