(1)在窗体中测量字符串
使用System.Drawing.Graphics
的MeasureString
函数 主要用它的2个重载函数
(1)Graphics.MeasureString
方法 (String, Font)
,测量用指定的 Font
对象绘制的指定字符串,返回 SizeF
结构。返回的SizeF
就是测量字符串的打印在屏幕上的宽度和高度,默认以像素为单位,与Form
中控件Size
的单位一致。该函数重载中还含有一个 StringFormat
参数,如果未指定这个参数,那么将使用StringFormat.GenericDefault
返回的StringFormat
进行测量,这个测量结果比较大。如果使用StringFormat.GenericTypographic
参数测量,结果比较小。
(2)public SizeF MeasureString(string text,Font font,SizeF layoutArea,StringFormat stringFormat, out int charactersFitted, out int linesFilled);
这个函数能测量使用指定字体和指定矩形区域中能容纳字符串的长度和行数,其中,layoutArea
为一个容纳字符串的矩形区域; stringFormat
为字符串的对齐方式,字符间距,是否保持词组在同一行等属性(这个参数很重要);charactersFitted
返回能容纳的字符的数目;linesFilled
返回能容纳字符的行数。 重点:默认的情况下Graphics
返回的结果是用像素作为单位,设置PageUnit
属性可以改变这种状态。窗体中创建Graphics
实例直接可以使用Control.CreateGraphics
方法。
(2)在打印时测量字符串(ActiveReport
)
两点注意:
(1) Graphics
对象由打印机创建pDoc.PrinterSettings.CreateMeasurementGraphics();
(2) 由于帐票的控件Size
均以inch
(英寸)或者厘米为单位,所以获得Graphics
实例后把PageUnit
属性设置为GraphicsUnit.Inch;
下面是其它网友的补充:
做一个画图表的系统,图表有标题框,标题框的大小是固定的,它不是Textbox
,是通过函数画的一个矩形,可以在里面输入标题,我如何得知输入的字符串的空间长度,不是Length
.例如,我的标题框的Width = 150, Heigth = 15
,那有什么库函数可以计算输入的字符串的Width
?
代码如下:
Graphics vGraphics = CreateGraphics();
SizeF vSizeF = vGraphics.MeasureString("Zswang", Font);
Console.WriteLine(vSizeF);
可以使用TextRenderer.MeasureText
以更精确的测量,代码参考如下:
代码如下:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
string str = "测试用的字符串";
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
Size size = TextRenderer.MeasureText(str, this.Font);
Rectangle rect = new Rectangle(20, 20, size.Width, size.Height);
TextRenderer.DrawText(e.Graphics, str, this.Font, rect, Color.Blue, Color.Yellow);
e.Graphics.DrawRectangle(SystemPens.ControlDarkDark, rect);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36298.html