C#如何测量字符串的高度宽度和精确取得字符串的高度宽度

 我来答
DemonZXY6Cz
2013-10-07 · 超过61用户采纳过TA的回答
知道答主
回答量:171
采纳率:50%
帮助的人:110万
展开全部
举个例子:给定字符串s,用Graphics的MeasureString获取高度宽度sizeF,并在一个给定的起点显示以sizeF为高度宽度的矩形大小和字符串sstrings="an English string and 一个中文字符串";Graphics g=this
.CreateGraphics();
g.PageUnit=GraphicsUnit.Pixel;
g.SmoothingMode=SmoothingMode.HighQuality;
StringFormat sf=newStringFormat();
sf.FormatFlags=StringFormatFlags.MeasureTrailingSpaces;
SizeF sizeF=
g.MeasureString(s,
this
.Font,
500
, sf);
g.DrawRectangle(Pens.Red,
newRectangle(100,
400
, Convert.ToInt32(sizeF.Width), Convert.ToInt32(sizeF.Height)));
g.DrawString(s,
this
.Font,
newSolidBrush(Color.Green),
100,
400);以100,400坐标位奇点绘制sizeF大小的矩形 和 字符串 改sizeF是测量该字符串得到的。
效果如下:(没处理显示质量 这个不是重点)注意'g'和'串'
说明Gdi+的MeasureString跟CDC的GetTextExtent完全不一样 GDI+在字符串四周添加一些长度,以适应字符串绝对可以被测量得到的SizeF包裹住,而且在末尾添加的更多空白,大概是想包裹住文字单击时的鼠标状态。
类似上面的代码,使用TextRender的MeasureText精确获得包裹字符串的区域,效果如下:
区别在于字符串末尾增宽 和 对英文字符下部的增宽处理。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式