C# MeasureString测量字符串函数的使用方法

 更新时间:2014年10月22日 14:00:57   投稿:mdxy-dxy  
这篇文章主要介绍了C# MeasureString测量字符串函数的使用方法,需要的朋友可以参考下

(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);

 
 
复制代码 代码如下:

string cid = "abcdefg";
int len = cid.Length;
len就是字符串的长度

 
 
可以使用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);
}

嘿嘿,问题解决了,非常感谢zswang,MeasureString方法很好用,给你加分哦
也很感谢hbxtlhx

相关文章

  • C#中DataTable删除行的方法分析

    C#中DataTable删除行的方法分析

    这篇文章主要介绍了C#中DataTable删除行的方法,包括了常见的几种删除方法的分析,需要的朋友可以参考下
    2014-09-09
  • Winform实现将网页生成图片的方法

    Winform实现将网页生成图片的方法

    这篇文章主要介绍了Winform实现将网页生成图片的方法,类似于一般浏览器自带的网页生成图片的功能,需要的朋友可以参考下
    2014-09-09
  • C#中深拷贝和浅拷贝的介绍与用法

    C#中深拷贝和浅拷贝的介绍与用法

    本文详细讲解了C#中深拷贝和浅拷贝的介绍与用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 深入多线程之:Reader与Write Locks(读写锁)的使用详解

    深入多线程之:Reader与Write Locks(读写锁)的使用详解

    本篇文章是对Reader与Write Locks(读写锁)的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#校验时间格式的场景分析

    C#校验时间格式的场景分析

    本文通过场景分析给大家讲解C#里如何简单的校验时间格式,本次的场景属于比较常见的收单API,对第三方的订单进行签名验证,然后持久化到数据库,需要的朋友跟随小编一起看看吧
    2022-08-08
  • c#图片处理之图片裁剪成不规则图形

    c#图片处理之图片裁剪成不规则图形

    最近项目要求实现不规则裁剪功能。本来想用html5的canvas在前端实现的,但是发现有点困难,以下为C#端对图对片的处理
    2014-05-05
  • C#实现简易计算器小功能

    C#实现简易计算器小功能

    这篇文章主要为大家详细介绍了C#实现简易计算器小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 分享WCF聊天程序--WCFChat实现代码

    分享WCF聊天程序--WCFChat实现代码

    无意中在一个国外的站点下到了一个利用WCF实现聊天的程序,作者是:Nikola Paljetak。研究了一下,自己做了测试和部分修改,感觉还不错,分享给大家
    2015-11-11
  • C#基于正则表达式删除字符串中数字或非数字的方法

    C#基于正则表达式删除字符串中数字或非数字的方法

    这篇文章主要介绍了C#基于正则表达式删除字符串中数字或非数字的方法,涉及C#针对数字的简单正则匹配相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • c#中Invoke与BeginInvoke的用法及说明

    c#中Invoke与BeginInvoke的用法及说明

    这篇文章主要介绍了c#中Invoke与BeginInvoke的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01

最新评论