C#如何MeasureString、Graphics获取字符串的像素长度
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获取字符串的像素长度的更多相关文章
- 黄聪:C#如何通过MeasureString、Graphics获取字符串的像素长度
1. 使用g.MeasureString()获得 使用MeasureString测量出来的字符宽度,总是比实际宽度大一些,而且随着字符的长度增大,貌似实际宽度和测量宽度的差距也越来越大了.查了一 ...
- C#获取字符串宽度像素
通过Graphics对象的MeasureString方法可以获取字符串的大小,如下: Graphics graphics = CreateGraphics(); SizeF sizeF = graph ...
- js 获取字符串的 像素 宽度 ----字符串格式化输出
function getLenPx(str, font_size) { var str_leng = str.replace(/[^\x00-\xff]/gi, 'aa').length; retur ...
- js获取字符串的实际长度并截断实际长度
在项目中有这样一个需求,就是一个很长的字符串,需要截断成几组字符串,而这几组字符串里既包含汉字,又包含字母,下面提供了几种方法 1,获取字符串的长度 function getstrlength(str ...
- js获取字符串的字节长度
占用3个字节的范围 U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3 共 115 个 U+2F00 - U+2FD5 : 0xE2 0xBC 0x80 ...
- c# 判断字符是否是全角, 获取字符串的字节数 , 获取字符串指定长度字节数的字符串
1 Encoding.Default.GetByteCount(checkString); =2 全角 =1 半角 /// <summary> /// 获取字符串的字节长度 /// &l ...
- [No0000A4]DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度
1.替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串.举例说明其功能:========================================= @echo off set a ...
- python raw String 获取字符串变量中的反斜杠
常用的获取raw string的方式为: >>>r'\n' \n 不能用在字符串变量中,获取字符串变量中的反斜杠如下: tab = '\n' >>>tab.enco ...
- 获取字符串中img标签的url集合(转载)
/// <summary> /// 获取字符串中img的url集合 /// </summary> /// <param name="content"& ...
- SQL Server 中获取字符串拼音的标量函数实现
工作中时常遇到字符串转换为拼音的需求.特别目前在各大网站平台都可以看到的基于拼音的查询功能.如果在查询中增加相应的拼音查询,就可以减少很多的因中文汉字完全输入的不便利,例如:当我要查询叫”郭德 ...
随机推荐
- arcpy获取polygon内环
当使用arcpy获取polygon几何的时候,不能像ao一样获取到内外环,只能获取到单个部件.而part返回的即是一个点组了. 所以只能通过None对象进行分割,确定部件内的内外环.一个part内,只 ...
- Mysql之innodb引擎
优势总结 只有数据库引擎为innodb且事务的隔离级别repeatable--read (可重复读)的时候 才会使用mvcc来实现多版本控制 事务中的可重复读可以有效的避免幻读问题 innodb从硬盘 ...
- 02C++顺序结构(1)
1.C++程序的样子 2.流 输出流 COUT<< 3.一个实例及解析 4.小结 头文件的解释 头文件是C++程序对其他程序的引用,就是让编译器的预处理器把这个输入输出流的标准文件iost ...
- FineReport模板性能问题排查方法
1. 概述 模板的加载速度受到很多因素影响,如果一个模板预览的时候,加载较慢,该如何去分析问题原因呢? 2. 排查步骤 2.1 查看数据集查询速度 大部分模板加载慢,都是因为 sql 执行速度比较慢. ...
- NATS: 对依赖注入支持
NuGet: NATS.Net 使用方法: serviceCollection.AddNats(); 在容器中添加了 2 个单例服务: NATS.Client.Core.NatsConnection ...
- 渗透测试-前端加密分析之RSA+AES
本文是高级前端加解密与验签实战的第8篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过RSA与AES加密来爆破登录. 由于RSA加解密有长度限制,以及解密速度等问题, ...
- 【前端】解决盒子被撑大问题 box-sizing
设置 box-sizing:border-box(原本的默认值为:content-box) box-sizing: content-box;/*盒子宽度=CSS中设置的width+border+pad ...
- 把 Windows 装进 Docker 容器里
本篇文章聊聊如何在 Docker 里运行 Windows 操作系统, Windows in Docker Container(WinD). 写在前面 我日常使用 macOS 和 Ubuntu 来学习和 ...
- k8s pod重启 deployment重启
1.15版本之后可通过kubectl rollout restart deployment -n 命令来实现滚动重启POD 该命令会先创建待用POD,待新POD运行成功后,再关闭原有POD.因此需要保 ...
- 关于Qt中的qss样式表需要注意的坑
关于QSS要注意的坑. qss源自css,相当于css的一个子集,主要支持的是css2标准,很多网上的css3的标准的写法在qss这里是不生效的,所以不要大惊小怪. qss也不是完全支持所有的css2 ...