1. 当单元格展示的字符串需要自动换行的时候,使用GDI绘制文本信息,需要计算字符串文本的实际高度信息(需要固定宽度)

方法一:代码如下,会出现文本没有挤满当前行,但是文本实际高度已换行。

        private void btnCalc_Click(object sender, EventArgs e)
{ Graphics g = this.CreateGraphics();
// 指定字符串格式
StringFormat sf = new StringFormat();
//StringFormat sf = StringFormat.GenericTypographic;
sf.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;
// 1. 计算字符串的高度和宽度(不限定高度和宽度)
SizeF sizeF = g.MeasureString(txtStr.Text, CreateFont(txtFontName.Text,
Convert.ToSingle(txtFontSize.Text)), new PointF(0,0) , sf); txtStrHeight.Text = sizeF.Height.ToString();
txtStrWidth.Text = sizeF.Width.ToString();
// 1. 计算字符串的高度和宽度(限定宽度,则高度存在换行))
SizeF sizeF2 = g.MeasureString(txtStr.Text, CreateFont(txtFontName.Text,
Convert.ToSingle(txtFontSize.Text)),50, sf);
//txtStrHeight.Text = sizeF.Height.ToString();
//txtStrWidth.Text = sizeF.Width.ToString(); } Font CreateFont(string fontName,float fontSize)
{
return new Font(fontName, fontSize, GraphicsUnit.Pixel);
}

修改上面出现的问题:

        private void btnCalc_Click(object sender, EventArgs e)
{ Graphics g = this.CreateGraphics();
// 指定字符串格式
StringFormat sf = StringFormat.GenericTypographic;
//StringFormat sf = StringFormat.GenericTypographic;
sf.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;
// 1. 计算字符串的高度和宽度(不限定高度和宽度)
SizeF sizeF = g.MeasureString(txtStr.Text, CreateFont(txtFontName.Text,
Convert.ToSingle(txtFontSize.Text)), new PointF(0,0) , sf); txtStrHeight.Text = sizeF.Height.ToString();
txtStrWidth.Text = sizeF.Width.ToString();
// 1. 计算字符串的高度和宽度(限定宽度,则高度存在换行))
SizeF sizeF2 = g.MeasureString(txtStr.Text, CreateFont(txtFontName.Text,
Convert.ToSingle(txtFontSize.Text)),50, sf);
//txtStrHeight.Text = sizeF.Height.ToString();
//txtStrWidth.Text = sizeF.Width.ToString(); } Font CreateFont(string fontName,float fontSize)
{
return new Font(fontName, fontSize, GraphicsUnit.Pixel);
}

C#如何MeasureString、Graphics获取字符串的像素长度的更多相关文章

  1. 黄聪:C#如何通过MeasureString、Graphics获取字符串的像素长度

    1.    使用g.MeasureString()获得 使用MeasureString测量出来的字符宽度,总是比实际宽度大一些,而且随着字符的长度增大,貌似实际宽度和测量宽度的差距也越来越大了.查了一 ...

  2. C#获取字符串宽度像素

    通过Graphics对象的MeasureString方法可以获取字符串的大小,如下: Graphics graphics = CreateGraphics(); SizeF sizeF = graph ...

  3. js 获取字符串的 像素 宽度 ----字符串格式化输出

    function getLenPx(str, font_size) { var str_leng = str.replace(/[^\x00-\xff]/gi, 'aa').length; retur ...

  4. js获取字符串的实际长度并截断实际长度

    在项目中有这样一个需求,就是一个很长的字符串,需要截断成几组字符串,而这几组字符串里既包含汉字,又包含字母,下面提供了几种方法 1,获取字符串的长度 function getstrlength(str ...

  5. js获取字符串的字节长度

    占用3个字节的范围 U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3 共 115 个 U+2F00 - U+2FD5 : 0xE2 0xBC 0x80 ...

  6. c# 判断字符是否是全角, 获取字符串的字节数 , 获取字符串指定长度字节数的字符串

    1 Encoding.Default.GetByteCount(checkString);  =2 全角 =1 半角 /// <summary> /// 获取字符串的字节长度 /// &l ...

  7. [No0000A4]DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度

    1.替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串.举例说明其功能:========================================= @echo off set a ...

  8. python raw String 获取字符串变量中的反斜杠

    常用的获取raw string的方式为: >>>r'\n' \n 不能用在字符串变量中,获取字符串变量中的反斜杠如下: tab = '\n' >>>tab.enco ...

  9. 获取字符串中img标签的url集合(转载)

    /// <summary> /// 获取字符串中img的url集合 /// </summary> /// <param name="content"& ...

  10. SQL Server 中获取字符串拼音的标量函数实现

        工作中时常遇到字符串转换为拼音的需求.特别目前在各大网站平台都可以看到的基于拼音的查询功能.如果在查询中增加相应的拼音查询,就可以减少很多的因中文汉字完全输入的不便利,例如:当我要查询叫”郭德 ...

随机推荐

  1. Natasha v9.0 为 .NET 开发者提供 [热执行] 方案.

    项目简介 自 Natasha v9.0 发布起,我将基于 Natasha 的推出热执行方案,这项技术允许基于 控制台(Console) 和新版 Asp.net Core 架构的项目在运行中动态重编译, ...

  2. 使用conditional 实现线程精准通讯

    实现3个线程之间依次执行 比如有3个线程A,B,C ,需要按照顺序执行,ABC,ABC 依次执行. 这个使用可以使用 Lock 的 conditional来实现线程之间精准通讯. 点击查看代码 pac ...

  3. Vue.js 其他指令

    1.ref标识 通过给HTML标签或者组件标签设定ref属性,根据他的属性值来访问这个HTML元素或者组件 语法:this.$refs.属性值 //为p标签设置ref属性 <div id=&qu ...

  4. Net中RabbitMq.Client7.0通过依赖注入DI来管理RabbitMQ客户端的生命周期

    在 RabbitMQ.Client 7.0.0 版本中, IModel 在 RabbitMQ.Client 7.0.0-alpha2 版本中已经被重命名,现在应该使用 IChannel 替代 IMod ...

  5. 《前端运维》二、Nginx--2请求处理流程及核心模块

    前一篇内容,我们学习了nginx的一些基本概念.安装和目录的作用.这篇文章我们来学习一些更加深入的内容. 一.Nginx请求处理流程 我们先来看张图吧: 我们看上图,首先客户端请求到Nginx服务器, ...

  6. electron postinstall$ node install.js报错

    本来以为是文件路径错了执行失败,手动去执行了下install.js,还是报错,但是不一样是连接超时 试了几种办法,简单直接就是如下方法 1:从项目node_modules中找到electron下的in ...

  7. Python开发一个Instant Messaging(IM)(即时通讯)聊天工具:从理论到实践

    一.引言 在现代社会中,即时通讯工具已经成为人们日常沟通的重要工具.开发一个IM聊天工具不仅能够提高我们的编程技能,还能让我们更好地理解即时通讯系统的原理.本文将详细介绍如何开发一个简单的IM聊天工具 ...

  8. manim边学边做--突出显示

    本篇介绍Manim中用于突出显示某些内容的动画类,主要包括: ApplyWave:让图形或文字产生连续波浪式变形的动画类,用于展示波动效果,参数可调节 Circumscribe:用于在几何场景中展示图 ...

  9. R数据分析,codewar的年终总结,和一周年总结,寒假快乐呀

    前阵子单位各个部门都在要求弄总结,想想自己这个公众号也写了快一年了,专门回去翻了翻,这个公众号发布的第一篇文章是在2021年的1月17日,我想2022年的1月17日我就把现在敲的文字推出来吧,也算是一 ...

  10. 开启Word、Excel、PPT时速度很慢的一种解决方法

      本文介绍基于修改加载项,解决Microsoft Office系列软件开启速度较慢的办法.   最近,发现Excel软件的打开速度越来越慢,会在一定程度上影响工作效率.因此尝试对此加以解决.其中,本 ...