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. 基于CPLD/FPGA的呼吸灯效果实现(附全部verilog源码)

    一.功能介绍 此设计可以让你的FPGA板子上那颗LED具有呼吸效果,像智能手机上的呼吸灯一样.以下源码已上板验证通过,大家可直接使用. 二.呼吸灯Verilog源码 ps1. 带★号处可根据需要进行修 ...

  2. CryptoHack做题记录

    一.GENERAL 1.ENCODING ASCII ascii = [99, 114, 121, 112, 116, 111, 123, 65, 83, 67, 73, 73, 95, 112, 1 ...

  3. openEuler欧拉部署Jenkins

    一.系统优化 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 二.安装Jenkins dnf -y install docker ...

  4. 06 IdentityServer4 中支持外部标识提供器

    06. IdentityServer4 External Providers .NET Core 3.1 January 24, 2020| deblokt| in category Tutorial ...

  5. 【Javaweb】【Servlet】简单验证用户的登陆

    点击查看代码 | jsp <%-- Created by IntelliJ IDEA. User: xrilang Date: 30/12/2021 Time: 17:31 --%> &l ...

  6. 开源架构Fabric、FISCO BCOS(以下简称“BCOS”)、CITA 技术对比

    转自 https://www.coingogo.com/news/41300 联盟链技术哪家强?开源架构Fabric.FISCO BCOS(以下简称"BCOS").CITA 技术对 ...

  7. Qt/C++地图测距/显示不同线段的距离/拿到测距结果/测距结束信号

    一.前言说明 地图测距在地图组件中属于一个比较小众的功能,但是又不得不提供,有时候用户希望直接在地图上选点,测算距离,尤其是在一些军事领域用的比较多,测距功能提炼出来的共性就是,每一段都有距离,最后鼠 ...

  8. Qt/C++音视频开发60-坐标拾取/按下鼠标获取矩形区域/转换到视频源真实坐标

    一.前言 通过在通道画面上拾取鼠标按下的坐标,然后鼠标移动,直到松开,根据松开的坐标和按下的坐标,绘制一个矩形区域,作为热点或者需要电子放大的区域,拿到这个坐标区域,用途非常多,可以直接将区域中的画面 ...

  9. 关于Qt国产化系统开发的几点总结

    随着国产化的兴起,各种国产系统和国产数据库等逐渐进入开发者的世界,科普几个要点. 中标麒麟neokylin基于fedora. 银河麒麟kylin早期版本比如V2基于freebsd,新版本V4.V10基 ...

  10. 【Java 温故而知新系列】基础知识-03 基本类型对应之包装类

    1.包装类都有哪些? 基本类型都有对应的包装类型,这些包装类提供了一种面向对象的方式来处理基本数据类型,允许它们被用于需要对象的场景,如集合框架.泛型等. 对应关系: 基本类型 包装类型 boolea ...