winform自定义控件(gdi+)——测量文本大小(MeasureString)

1、MeasureString(String, Font)
代码:

   string measureString = "Measure String";

            Font stringFont1 = new Font("Arial", 60);
            SizeF layoutSize = new SizeF(200.0F, 50.0F);

            // Measure string.
            SizeF stringSize = new SizeF();
            stringSize = e.Graphics.MeasureString(measureString, stringFont1);
            // Draw rectangle representing size of string.
            e.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0.0F, 0.0F, stringSize.Width, stringSize.Height);
            // Draw string to screen.
            e.Graphics.DrawString(measureString, stringFont1, Brushes.Black, new PointF(0, 0));

输出:

说明:
测量的大小随着字体的增大而增大。

2、MeasureString(String, Font, SizeF)
代码:

  // Set up string.
            string measureString = "Measure String";

            Font stringFont1 = new Font("Arial", 6);
            SizeF layoutSize = new SizeF(200.0F, 50.0F);

            // Measure string.
            SizeF stringSize = new SizeF();
            stringSize = e.Graphics.MeasureString(measureString, stringFont1, layoutSize);
            // Draw rectangle representing size of string.
            e.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0.0F, 0.0F, stringSize.Width, stringSize.Height);
            // Draw string to screen.
            e.Graphics.DrawString(measureString, stringFont1, Brushes.Black, new PointF(0, 0));


            Font stringFont2 = new Font("Arial", 16);
            stringSize = e.Graphics.MeasureString(measureString, stringFont2, layoutSize);
            // Draw rectangle representing size of string.
            e.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0, 100F, stringSize.Width, stringSize.Height);
            // Draw string to screen.
            e.Graphics.DrawString(measureString, stringFont2, Brushes.Black, new PointF(0, 100));

            Font stringFont3 = new Font("Arial", 56);
            // Set maximum layout size.
            stringSize = e.Graphics.MeasureString(measureString, stringFont3, layoutSize);
            // Draw rectangle representing size of string.
            e.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0.0F, 300F, stringSize.Width, stringSize.Height);
            // Draw string to screen.
            e.Graphics.DrawString(measureString, stringFont3, Brushes.Black, new PointF(0, 30


输出:

说明:
最后一个size指定了文本的最大区域,当字体超出最大区域的时候,矩形就不能包含字体了。

3、MeasureString(String, Font, Int32)
最后一个参数限制宽度,功能和MeasureString(String, Font, SizeF)相同。

4、MeasureString(String, Font, PointF, StringFormat)
代码:

 // Set up string.
            string measureString = "Measure String";
            Font stringFont = new Font("Arial", 16);

            // Set point for upper-left corner of string.
            float x = 50.0F;
            float y = 50.0F;
            PointF ulCorner = new PointF(x, y);

            // Set string format.
            StringFormat newStringFormat = new StringFormat();
            newStringFormat.FormatFlags = StringFormatFlags.DirectionVertical;

            // Measure string.
            SizeF stringSize = new SizeF();
            stringSize = e.Graphics.MeasureString(measureString, stringFont, ulCorner, newStringFormat);

            // Draw rectangle representing size of string.
            e.Graphics.DrawRectangle(new Pen(Color.Red, 1), x, y, stringSize.Width, stringSize.Height);

            // Draw string to screen.
            e.Graphics.DrawString(measureString, stringFont, Brushes.Black, ulCorner, newStringFormat);

输出

说明:可以指定文本格式
————————————————
版权声明:本文为CSDN博主「上位机软件」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34059233/article/details/119911808

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值