VC里或C#里的graphics库里的emSize到底是什么意思?

 我来答
CodeBlove
2016-04-27 · TA获得超过3364个赞
知道小有建树答主
回答量:936
采纳率:79%
帮助的人:240万
展开全部

就是字体大小啊。

 

看附图测试,先把标签字体设置为20,作为参照,然后在按钮事件中编写绘制字符串的代码,emSize也设置为20,可以看到大小一致。

 

追问
谢谢回答,但我知道是字体大小,也知道是相对大小,它的单位不是像素不是点不是英寸,我想知道到底是相对于什么的大小?
追答

那就应该直接问一般说的字体大小单位是什么,这个和C#等编译器无关,和系统的字体设计以及显示映射有关。

 

其实我觉得对于一般开发者不必在这方面深究太多,只有涉及到打印输出时才需要了解。对于 font-size,只要知道它取不同数值时(比如 size= 12)文本有多大就好。我们关心的是字看起来有多大、字的大小是否好读美观,我们并不关心字母“A”的像素高度,或者“a”的字母像素高度。

 

显示中文时,任意emSize尺寸下每个字母或汉字都有一个长宽相等正方形的隐形渲染框,称为em框(和html中的em标签没关系),每个em框都是紧挨着的,在不同的字体样式下(斜体、粗体等),字体的渲染边界永远不会超过em框,换句话说字体实际尺寸永远小于em框,而每一个文字或字母显示上占据em框多少是不一样的;显示英文字体时,em宽度是却是可变的,因此这涉及到字体设计问题,所以你可以理解为1个emSize就是一个em框的高度单位或者抽象点就是一个em。

 

当我们设置fontsize=12pt的时候就是设定了一个对应关系,即一个em框的高度/宽度(中文)等于12个point(pt)。pt就是磅,音译,物理量,1pt=1/72in,1in=2.54cm,因此1pt相当于0.3528毫米。

 

而在显示时,可以采用函数测试输出尺寸:

 public SizeF SizeOfPrintOut(Font font,string text)
 {
    Bitmap bmp = new Bitmap(1, 1);
    Graphics g = Graphics.FromImage(bmp); 
    SizeF size = g.MeasureString(text, font); 
    g.Dispose();
    bmp.Dispose();
    return size;
 }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式