我有一个由 MATLAB 中的绘图和静态文本组成的 gui。
我想在绘图上有一个缩放监听器,以便我可以用放大率更新静态文本。无论如何我可以做到这一点吗?
脚本文件(或者您可以将其作为嵌套函数执行,随心所欲):
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