在GUI中使用Matlab缩放监听器

时间:2013-09-29 21:16:48

标签: matlab plot zoom

我有一个gui,它由一个情节和MATLAB中的静态文本组成。

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

1 个答案:

答案 0 :(得分: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

输出:

enter image description here

另外,如果您想直接更改缩放功能的工作方式或搞乱其他一些事情,请参阅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