大佬教程收集整理的这篇文章主要介绍了windows – 文本’Extent’属性不包含正确的大小,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我发现有几个线程解释说这可以使用包含相同文本的’text’对象的’Extent’属性来完成,参见示例:
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','pixels','String',txt,'FontName','FontSize',fontsizE); textsize = get(u,'Extent'); textsize = textsize(3:4); close(f); form = figure('Units','pixels'); uicontrol(form,fontsize,'Position',[5,5,textsize]); end
我现在的问题是,这不起作用.
当我使用tempfunc运行上面的内容时(repmat(‘a’,14));我得到下面的图窗口:
从图像中可以看出,在textsize变量中提取的文本的高度太小了!
请注意,这是我在运行Matlab R2014a的Windows计算机上运行程序时得到的结果.我后来在运行Matlab R2013b的Linux机器上运行完全相同的代码,在那台机器上我得到了我想要的结果.
我正在制作的GUI应该(希望)能够在任何计算机上运行,但是现在我真的不知道如何继续制作适用于任何机器的版本,所以请帮助我!
编辑:
我试图在运行Matlab R2011b(而不是我的R2014a)的另一台Windows 7机器(这次是Ultimate版而不是我的企业版)上运行相同的代码,它仍然产生了错误的文本框高度 – 但这次是文本框太高了 – 看图像:
EDIT2:
我终于安装了R2014b,但遗憾的是它没有帮助!
我看到了类似的图片:
我还试图看看我的屏幕分辨率的不同选择是否有所不同 – 他们没有.
EDIT3:
我注意到不同的字体在高度上产生不同的错误,例如默认字体(MS Sans Serif)会产生一个太高的文本框(随着更多行的添加,这个高度错误也会增加) – 在Linux上我得到了我尝试的所有字体的正确结果.
但我真正感兴趣的是使用快递字体的情况,因为我需要一个等宽字体用于我的目的.
> getVisibleRect
> getSize
(根据我的测试,它给getVisibleRect提供了可比较的结果)
> getPreferredSize
问题是,“首选大小”似乎是正确的大小(你寻求),而get(…,’Extent’)返回的大小;是可见大小,具有以下含义:
为了阐明上述内容:图形窗口的主题和平台特定装饰可能会减少组件的可用空间,从而减小其可见尺寸(如here所述).
作为一个数字示例,当使用默认设置和repmat(‘a’,14)运行时,我得到(在Win7上,MATLAB 2015a):
>得到(你,’范围’) – [0,116,214]
> jHandle.getVisibleRect – java.awt.Rectangle [x = 0,y = 0,width = 116,height = 214]
> jHandle.getSize – java.awt.Dimension [width = 116,height = 214]
> jHandle.getPreferredSize – java.awt.Dimension [width = 116,height = 221]
现在问题是如何方便地获得PreferredSize(或jHandle,它可以从中检索)…
我使用的一个选项是findjobj实用程序,其用法与jHandle = findjobj(u)一样简单.
总结一下:
>将findjobj放在工作文件夹中.
>替换找到textize的两行:
>利润.
附:
我的推理可能有缺陷,对Swing的理解不正确,但这种解释对我来说更有意义,更重要的是 – 它有效.
以上是大佬教程为你收集整理的windows – 文本’Extent’属性不包含正确的大小全部内容,希望文章能够帮你解决windows – 文本’Extent’属性不包含正确的大小所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。