C#如何测量字符串的高度宽度和精确取得字符串的高度宽度

TextRenderer.MeasureText计算字符串文本所占的尺寸 TextRenderer.MeasureText是Winform中用于计算文本尺寸的一个很好用的方法,WPF中也可以使用。用法如下: Font f = new Font(“SimSun”, 9F, System.Drawing.FontStyle.Regular); System.Drawing.Size aSize = System.Windows.Forms.TextRender 阅读详情

因为MFC中CDC有GetTextExtent()可以获得字符串的高度宽度 像素单位,所以自然想到c#的GDI+的MeasureString,这个同样是测量字符串高度宽度,但是这个不同于CDC,他不适用CDC.GetTextExtent()的适用领域,GDI+ MeasureString会自己处理矩形区域,返回这个矩形区域SizeF,这就是为什么是浮点而不是整数,它根本就不是字符串准确的高度宽度。 举个例子:给定字符串s,用Graphics的MeasureString获取高度宽度sizeF,并在一个给定的起点显示以sizeF为高度宽度的矩形大小和字符串s

string s ="an English string and 一个中文字符串"; 
Graphics g 
=this.CreateGraphics(); 
g.PageUnit 
= GraphicsUnit.Pixel; 
g.SmoothingMode 
= SmoothingMode.HighQuality; 
StringFormat sf 
=new StringFormat(); 
sf.FormatFlags 
= StringFormatFlags.MeasureTrailingSpaces; 
SizeF sizeF 
= g.MeasureString(s, this.Font, 500, sf); 
g.DrawRectangle(Pens.Red, 
new Rectangle(100, 400, Convert.ToInt32(sizeF.Width), Convert.ToInt32(sizeF.Height))); 
g.DrawString(s, 
this.Font, new SolidBrush(Color.Green), 100, 400);

以100,400坐标位奇点绘制sizeF大小的矩形 和 字符串 改sizeF是测量该字符串得到的。

效果如下:(没处理显示质量 这个不是重点)注意'g'和'串'

说明Gdi+的MeasureString跟CDC的GetTextExtent完全不一样 GDI+在字符串四周添加一些长度,以适应字符串绝对可以被测量得到的SizeF包裹住,而且在末尾添加的更多空白,大概是想包裹住文字单击时的鼠标状态。

类似上面的代码,使用TextRender的MeasureText精确获得包裹字符串的区域,效果如下:

区别在于字符串末尾增宽 和 对英文字符下部的增宽处理。

C#利用GDI+给图片添加文字(文字自适应矩形区域) 主要给大家介绍了关于C#利用GDI+给图片添加文字(文字自适应矩形区域)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。 立即下载

相关推荐

Windows NPS与华为、华三、思科设备RADIUS认证实战指南

本文详细介绍了Windows NPS与华为、华三、思科设备RADIUS认证的实战配置指南。通过NPS服务器统一管理网络设备认证,实现企业级安全访问控制,涵盖基础配置、设备对接及故障排查方法,助力管理员提升网络安全管理效率。

weixin_29284201的博客 505

C#中计算字符串文本所占的尺寸 [TextRenderer.MeasureText]

提供的尺寸,以像素为单位指定的文本时使用指定的字体,使用指定的大小创建初始边框绘制。 命名空间: System.Windows.Forms程序集: System.Windows.Forms(位于 System.Windows.Forms.dll) 下面的代码示例演示如何使用其中一个 MeasureText 方法。 若要运行本示例,请将代码粘贴到一个 Windows 窗体并调用...

细雨纷飞~~~ 3991

从零组装电赛送药小车:OpenMV视觉核心+STM32控制,我的软硬件联调全记录

本文详细记录了从零构建电赛智能送药小车的全过程,重点解析了OpenMV视觉识别与STM32控制的深度协同方案。通过硬件选型对比、通信协议设计、PID调参等实战经验,解决了巡线精度、十字路口识别等核心问题,最终实现稳定可靠的送药小车系统,助力电子设计竞赛取得优异成绩。

weixin_42641741的博客 448

C# 根据文本获取Text宽高

var textSize = GetTextSize(txtSentence.Text, txtSentence.FontFamily, txtSentence.FontStyle, txtSentence.FontWeight, txtSentence.FontStretch, txtSentence.FontSize,

Ushino的博客 1556

手把手教你用Arduino搭建惠斯通电桥:从原理到代码实现(附完整电路图)

本文详细介绍了如何利用Arduino搭建惠斯通电桥,从硬件选型、电路设计到代码实现和校准技巧,提供完整的电路图和实用代码示例。特别适合电子爱好者和创客学习高精度电阻测量技术,并扩展应用于应变片测量和温度监测等实际项目。

o4p5q6r7s的博客 401

BLE蓝牙胎压监测

胎压监测系统新技术

qq_41851841的博客 1255

winform textbox文本框根据内容自动调整高度

textbox根据内容自动调整高度 首先将Textbox改为多行模式,设置MutliLine属性为True,对于textbox中文本有回车的,直接通过textbox.lines.count()可以获取到行数。 但是单行无回车的文本如何知道自动换行状态下,高度呢? 首先使用Size size = TextRenderer.MeasureText(textBox2.Text, textBox1.Font);进行测量,然后进行计算,以下代码较粗,仅抛砖引玉。 代码 /// <summary>

weixin_53444764的博客 4698

一本集成电路静态时序设计经典之作(可下载)

本书全面深入探讨集成电路设计中关键技术的专著,涵盖了从基础知识到高级应用的各个方面。本书详细介绍了集成电路的发展历程、**静态时序分析的重要性、基本时序模型、时序信息库文件的构建、时序约束的设置、串扰噪声的影响及其控制方法**,并通过实战案例展示了如何进行有效的时序分析和优化。

nuoweishizi的博客 850

C#计算字符串的长度和高度(这里是实际的像素宽度和高度)

在我们采用GDI+画控件的时候总是需要动态的计算字符串的长度和高度,否则对齐方式会显得无效。下面就介绍下具体的方法。 /// <summary> /// 测量用指定的 System.Drawing.Font 绘制的指定字符串。 /// </summary> /// <param name="g">...

zuoziqiang520的专栏 5506

深入解析FPGA中的GTX高速收发器架构与设计原理

本文深入解析了FPGA中GTX高速收发器的核心架构与设计原理。文章将GTX比作数据“高速公路”,详细拆解了其PMA(物理媒介适配层)与PCS(物理编码子层)的双层结构,阐述了串并转换、时钟恢复等关键技术,并提供了时钟源选型(QPLL/CPLL)、上电复位流程及信号完整性调试等实战指南,是掌握高速接口设计的必备知识。

f6g7h8i9j的博客 219

HWSD2.0土壤数据处理实战:从下载到属性提取全流程解析

本文详细解析了HWSD2.0全球土壤数据库从数据下载、属性筛选到GIS空间连接与提取的全流程实战方法。重点介绍了如何利用ArcGIS Pro等工具,将土壤单元编码与黏粒含量等属性表关联,最终生成全球土壤属性专题栅格图,为农业规划与生态研究提供关键数据支撑。

weixin_29214691的博客 610

Word控件Spire.Doc 【文本】教程(9) ;如何在C#中获取word文档中文本的高度和宽度

首先,下载并安装 Spire.Doc for .NET,然后通过以下路径在下载的 Bin 文件夹中添加 Spire.Doc.dll 作为参考:“..\Spire.Doc\Bin\NET4.0\ Spire.Doc.dll ”。下面详细介绍如何在C#中获取word文档中文本的高度和宽度。通过使用 Spire.Doc,开发人员可以找到并突出显示文本,提取word 文档中的文本。本文将向您展示如何借助 Spire.Doc 在 C# 中获取 word 文档中文本的高度和宽度。:获取文本高度和宽度并阅读。

励志做最业余的专业博主,控件产品可以私我~ 943

银行数据仓库体系实践(3)--数据架构

狭义的数据仓库数据架构用来特指数据分布,广义的数据仓库数据架构还包括数据模型、数据标准和数据治理。即包含相对静态部分如元数据、业务对象数据模型、主数据、共享数据,也包含相对动态部分如数据流转、ETL、整合、访问应用和数据全生命周期管控治理。 数据架构层面通过数据分类、分层部署等手段,从非功能性视角将数据合理布局。通过整体架构管控和设计,支持业务操作类和管理分析类应用(系统),满足业...

acumen_leo的博客 7011

如何测量字符串的高度宽度 and 精确取得字符串的高度宽度

因为MFC中CDC有GetTextExtent()可以获得字符串的高度宽度 像素单位,所以自然想到c#的GDI+的MeasureString,这个同样是测量字符串高度宽度,但是这个不同于CDC,他不适用CDC.GetTextExtent()的适用领域,GDI+MeasureString会自己处理矩形区域,返回这个矩形区域SizeF,这就是为什么是浮点而不是整数,它根本就不是字符串准确的高度宽度。...

weixin_30716725的博客 321

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C#中如何获取一个字体的宽度值(像素单位)-获得文字的像素宽度

C#中如何获取一个字体的宽度值(像素单位) 是不是这个意思 private void button1_Click(object sender, EventArgs e) { Graphics g = this.CreateGraphics(); SizeF sizeF = g.MeasureString("A", new Font("宋体", 9)); Mess...

cxu123321的博客 7895

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

获取字符串像素宽度及高度

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using Sy...

abc8812399的博客 398

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

(1)在窗体中测量字符串 使用System.Drawing.Graphics的MeasureString函数 主要用它的2个重载函数 (1)Graphics.MeasureString 方法 (String, Font) ,测量用指定的 Font 对象绘制的指定字符串,返回 SizeF 结构。返回的SizeF就是测量字符串的打印在屏幕上的宽度和高度,默认以像素为单位,与Form中控件Size的单位...

极客神殿 4439

C#打印时获得字符串的正确像素宽度高度

转自:http://blog.csdn.net/yourredsun/archive/2008/01/11/2037330.aspx 页面长宽属性:PrintPageEventArgs.PageBounds 属性   表示页面全部区域的矩形区域。PrintPageEventArgs.MarginBounds 属性 以百分之一英寸为单位的矩形区域,表示边距以内的页面部分。测量字符串的

ljgsyf的专栏 1705

c# 计算空格宽度像素_JS 计算任意字符串宽度

PS: 是宽度不是长度!由于像素和字体大小,字节(特别是 UTF-8)等限制因素,所以我们不能直接知道一个字符串所占的实际宽度。这里提供几种比较测量方法:1、通过Canvas测/** * Uses canvas.measureText to compute and return the width of the given text of given font in pixels. * *...

weixin_32498321的博客 197

C# 字符串换行、字符串像素高度、宽度 的结构

//字符串高度、宽,行数,及字符串本身 public struct hhString { public string str; //处理后的字符串 public int hSnumber; //共有几行(插入多少个断行符) public float width; //处理后的字符串宽 public float height;//处理后的字符串高

gui597651737的专栏 4811

C#打印时获得字符串的正确像素高度,可使字符居中及精确定位

页面长宽属性:PrintPageEventArgs.PageBounds 属性   表示页面全部区域的矩形区域。PrintPageEventArgs.MarginBounds 属性 以百分之一英寸为单位的矩形区域,表示边距以内的页面部分。测量字符串的方法:PrintPageEventArgs.Graphics.MeasureString 方法 (String, Font)于是我用下面的方法

chybaby的专栏 4816

c# 计算空格宽度像素_c# 获得文字的像素宽度

Graphics graphics = CreateGraphics();SizeF sizeF = graphics.MeasureString(textBox1.Text, new Font("宋体", 9));MessageBox.Show(string.Format("字体宽度:{0},高度:{1}", sizeF.Width, sizeF.Height));graphics.Dispos...

weixin_39648297的博客 206
上一篇: Winform程序在Win10下面界面布局混乱的情况
下一篇: 如何利用String.Split()对字符串进行分割
SmallSoftware
博客等级 码龄11年 12粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值