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 中获取字符串拼音的标量函数实现
工作中时常遇到字符串转换为拼音的需求.特别目前在各大网站平台都可以看到的基于拼音的查询功能.如果在查询中增加相应的拼音查询,就可以减少很多的因中文汉字完全输入的不便利,例如:当我要查询叫”郭德 ...
随机推荐
- 阿里巴巴LangEngine开源了!支撑亿级网关规模的高可用Java原生AI应用开发框架
LangEngine作为阿里集团内部发起的纯Java版本的AI应用开发框架,经过充分实践,已经广泛应用于包括淘宝.天猫.阿里云.爱橙科技.菜鸟.蚂蚁.飞猪.1688.LAZADA等在内的多个业务场景. ...
- C#获取用户客户端系统版本设备名称浏览器
C#获取用户客户端系统版本设备名称浏览器 先看效果 使用 Neget引用包UAParser 在这里插入代码片 项目的github :https://github.com/ua-parser/uap-c ...
- 『玩转Streamlit』--集成Plotly
之前介绍了如何在Streamlit App中使用Matplotlib库来绘图. 本篇介绍 Steamlit结合Poltly的方法,相比于Matplotlib,Poltly的交互性更强, 更适合在Web ...
- 2021年最新js手机号正则验证 最全全部号段
手机号验证正则 /^1[3-9]\d{9}$/ js的例子 isphone.html <html> <body> <input id="Tel" ty ...
- Qt编写RK3588视频播放器/支持RKMPP硬解/支持各种视音频文件和视频流/海康大华视频监控
一.前言 用ffmpeg做硬解码开发,参考自带的示例hw_decode.c即可,里面提供了通用的dxva2/d3d11va/vaapi这种系统层面封装的硬解码,也就是无需区分用的何种显卡,操作系统自动 ...
- 记一次 .NET某工业视觉软件 崩溃分析
一:背景 1. 讲故事 前两天给训练营里的一位学员分析了一个dump,学员因为弄了一整天也没找到祸根,被我一下子弄出来了,极度想看看我是怎么分析的?由于在微信上不能一言两语表尽,干脆写一篇文章出来详细 ...
- C#使用Tesseract C++ API过程记录
Tesseract Tesseract 是一个开源的光学字符识别(OCR)引擎,最初由 Hewlett-Packard(惠普)实验室开发,后来由 Google 收购并继续维护和开源贡献.Tessera ...
- IM消息ID技术专题(七):深度解密vivo的自研分布式ID服务(鲁班)
本文由vivo互联网技术An Peng分享,本文收录时有内容修订和重新排版. 1.引言 本文通过对分布式ID的3种应用场景.实现难点以及9种分布式ID的实现方式进行介绍,并对结合vivo业务场景特性下 ...
- k8s集群部署项目完整过程记录
将k8s-web项目制作成镜像 构建 study/k8s-web:1.0 镜像 构建java环境并上传jar包 docker pull java:8u111 mkdir /usr/dockerfile ...
- OGC标准地图服务协议总结
OGC标准地图服务协议总结 1. WMS WMS(Web Map Service)是OGC(Open Geospatial Consortium)定义的一种地图服务协议.它允许客户端通过HTTP请求从 ...