2

我有一个由 MATLAB 中的绘图和静态文本组成的 gui。

我想在绘图上有一个缩放监听器,以便我可以用放大率更新静态文本。无论如何我可以做到这一点吗?

4

1 回答 1

3

脚本文件(或者您可以将其作为嵌套函数执行,随心所欲):

f = figure(1);
z = zoom(f);
imshow(ones(400));
xlim = get(gca,'XLim');
t = text(150,150,'hello','fontsize',4000/(xlim(2)-xlim(1)));
set(z,'ActionPostCallback',@(obj,event_obj)testcallback(obj,event_obj,t));

函数testcallback.m文件:

function testcallback(obj,event_obj,t)
    xlim = get(event_obj.Axes,'XLim');
    set(t,'fontsize',4000/(xlim(2)-xlim(1)));
end

输出:

在此处输入图像描述

zoom此外,如果您想直接更改缩放功能的工作方式或弄乱其他一些东西,这里是关于该对象的 matlab 文档:

http://www.mathworks.com/help/matlab/ref/zoom.html

编辑: 最后,您可以将其实现为嵌套函数来传递文本对象。将其另存为testfunction.m,然后只需键入以下内容即可在终端中运行它testfunction

function testfunction

    f = figure(1);
    z = zoom(f);
    imshow(ones(400));
    xlim = get(gca,'XLim');
    t = text(150,150,'hello','fontsize',4000/(xlim(2)-xlim(1)));
    set(z,'ActionPostCallback',@testcallback);

    function testcallback(obj,event_obj)
        xlim = get(event_obj.Axes,'XLim');
        set(t,'fontsize',4000/(xlim(2)-xlim(1)));
    end

end
于 2013-09-29T21:56:12.647 回答