我想在 GUI 中放置一些文本,并且我想知道uicontrol
类型'text'
需要的确切大小!
我发现了几个线程解释这可以使用包含相同文本'Extent'
的对象的属性来完成,请参见示例:'text'
function form = tempfunc(txt,font,fontsize)
if nargin <3
fontsize = 10;
end
if nargin < 2
font = 'courier';
end
f = figure('Visible','off','Units','pixels');
u = uicontrol(f,'Style','text','Units','pixels','String',txt,'FontName',font,'FontSize',fontsize);
textsize = get(u,'Extent');
textsize = textsize(3:4);
close(f);
form = figure('Units','pixels');
uicontrol(form,'Style','text','Units','pixels','String',txt,'FontName',font,'FontSize',fontsize,'Position',[5,5,textsize]);
end
我现在的问题是这不起作用。当我运行上面的命令时,tempfunc(repmat('A',14));
我得到下图窗口:
从图中可以看出,textsize
变量中提取的文本高度太小了!
请注意,这是我在运行 Matlab R2014a 的 Windows 计算机上运行程序时得到的结果。后来我在运行 Matlab R2013b 的 Linux 机器上运行了完全相同的代码,并在那台机器上得到了我想要的结果。
我正在制作的 GUI 应该(希望)能够在任何计算机上运行,但现在我真的不知道如何继续制作适用于任何机器的版本,所以请帮助我!
编辑: 我尝试在另一台运行 Matlab R2011b(而不是我的 R2014a)的 Windows 7 机器(这次是 Ultimate 版而不是我的 Enterprise 版)上运行相同的代码,它仍然产生了错误的文本框高度 - 但这次文本框太高 - 见图片:
EDIT2: 我终于安装了 R2014b,但遗憾的是它没有帮助!我得到了一张类似的图片:
我还试图看看我的屏幕分辨率的不同选择是否有任何区别——它们没有。
编辑3:
我注意到不同的字体会产生不同的高度错误,例如默认字体(MS Sans Serif)会产生一个太高的文本框(并且随着添加更多行,这种高度错误也会增加) - 但是在 Linux 上我我尝试的所有字体都得到了正确的结果。
但实际上我最感兴趣的情况是使用 courier 字体的情况,因为我需要一个等宽字体来达到我的目的。