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

(0)

相关推荐

  • C#自定义函数NetxtString生成随机字符串

    本文实例展示了C#自定义函数NetxtString实现生成随机字符串的方法,在进行C#项目开发中非常实用!分享给大家供大家参考. 一.生成随机字符串 关键代码如下: /// <summary> /// 生成随机字符串 /// </summary> /// <param name="random">Random</param> /// <param name="size">字符串长度</param>

  • C#中String与string的区别分析

    本文实例展示了C#程序设计中String与string的区别,对于C#初学者来说有很好的参考借鉴价值.具体如下: 一.区别分析: String:类,System.String string:类型,变量 两者本质上没有任何区别,都是System.String,string只是System.String的别名而已 唯一的区别在于如何按照代码约定的来写,如声明变量时使用小写string,使用System.String下方法时使用大写的String 二.示例代码如下: class Program { s

  • C#中StringBuilder类的使用总结

    String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能. 通过用一个重载的构造函数方法初始化变量,可以创建

  • C#中Convert.ToString和ToString的区别分析

    本文实例分析了C#中Convert.ToString和ToString的区别,对于初学者来说是很有必要加以熟练掌握的.具体分析如下: 1.Convert.ToString能处理字符串为null的情况. 测试代码如下: static void Main(string[] args) { string msg = null; Console.WriteLine(Convert.ToString(msg)); Console.ReadKey(); } 运行,没有抛出异常. 2.ToString方法不能

  • C#中string和StingBuilder内存中的区别实例分析

    本文实例分析了C#中string和StingBuilder内存中的区别,有助于更好的掌握C#程序设计中string和StingBuilder的用法.分享给大家供大家参考.具体方法如下: 关于 string和StringBuilder的区别参考MSDN.本文用程序演示它们在内存中的区别,及其因此其行为不同. 先来看看下面这段代码: //示例: string 的内存模型 namespace ConsoleApplication2 { class Program { static void Main(

  • C#中把字符串String转换为整型Int的小例子

    本文介绍如何在使用C#开发程序时,将一个字符串String变量的值转换为一个整型Int变量. 比如,我们在C#中定义一个字符串变量,用它来获取一个xml中的值.小编这里并不是故意要用一个字符串去获取xml节点的值,而是使用InnerText的方式获取的值必须是字符串String类型的. 复制代码 代码如下: string tmpValue = ""; tmpValue = xml.DocumentElement["expirydays"].InnerText.Tri

  • C# 利用StringBuilder提升字符串拼接性能的小例子

    用Stopwatch分段监控了一下,发现耗时最多的函数是SaveToExcel 此函数中遍列所有数据行,通过Replace替换标签生成Excel行,然后将行数据累加赋值到一个字符串 复制代码 代码如下: string excelString = ""; foreach(var item in list){         excelString += string.Format("<row>....{0}</row>",list.Title)

  • C#中string.format用法详解

    本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项. String.Format (String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项. String.Format (IFormatProvide

  • C#中String类常用方法汇总

    本文实例汇总了C#中String类常用方法.分享给大家供大家参考.具体分析如下: C#中的String类很有用,下面是一些它的常用方法的总结,如果灵活运用这些的话,String类就掌握的差不多了. .ToLower()    //转为小写字符串"AbC"-->"abc" .ToUpper()    //转为大写"AbC" -->"ABC" .Trim()       //去掉字符串首尾的空格"  abc

  • C#中string用法实例详解

    在进行C#程序设计时,用的最多的莫过于string了,但有些时候由于不仔细或者基础的不牢固等因素容易出错,今天本文就来较为详细的总结一下C#中string的用法.具体如下: 1.string是一个引用类型,平时我们比较string对象,比较的是对象的值而不是对象本身 如下面代码所示: string strA="abcde"; string strB="abc"; string strC="de"; Console.WriteLine(strA =

  • C#实现去除Strings中空格的方法

    本文实例讲述了C#实现去除Strings中空格的方法,分享给大家供大家参考.具体实现方法如下: 一般来说,你或许知道你能使用String.Trim方法去除字符串的头和尾的空格,不幸运的是. 这个Trim方法不能去除字符串中间的C#空格. 示例代码如下: 复制代码 代码如下: string text = "  My test\nstring\r\n is\t quite long  ";  string trim = text.Trim(); 这个'trim' 字符串将会是: 复制代码

随机推荐