我有一个gui,它由一个情节和MATLAB中的静态文本组成。
我想在绘图上有一个缩放监听器,这样我就可以用放大倍率更新静态文本。无论如何我能做到吗?
答案 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
输出:
另外,如果您想直接更改缩放功能的工作方式或搞乱其他一些事情,请参阅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