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

1、    使用g.MeasureString()获得

使用MeasureString测量出来的字符宽度,总是比实际宽度大一些,而且随着字符的长度增大,貌似实际宽度和测量宽度的差距也越来越大了。查了一下MSDN,找到了下面这个理由:MeasureString 方法旨在与个别字符串一起使用,它在字符串前后包括少量额外的空格供突出的标志符号使用。

string str;
str = "大";
Font f = new Font("SimSun", 7F, System.Drawing.FontStyle.Regular);
Graphics g = this.CreateGraphics();

//单位为mm
g.PageUnit = GraphicsUnit.Millimeter;
SizeF sim = g.MeasureString(str, f);

2、使用TextRenderer.MeasureText获得,提供使用指定尺寸创建文本初始边框时,使用指定的设备上下文、字体和格式说明所绘制的指定文本的尺寸(以像素为单位)。

private void MeasureText(PaintEventArgs e)
{
            string str;
            str = "大家好";
            Font f = new Font("SimSun", 7F, System.Drawing.FontStyle.Regular);
            Size sif = TextRenderer.MeasureText(e.Graphics, str, f, new Size(0, 0), TextFormatFlags.NoPadding);
            MessageBox.Show((sif.Width / pdi).ToString());
}

private void print(object sender, PaintEventArgs e)
{
            MeasureText(e);
}
时间: 2024-10-11 20:03:36

黄聪:C#如何通过MeasureString、Graphics获取字符串的像素长度的相关文章

QT获取字符串的像素的宽与高

//设置字体 QFont font; font.setFamily("Microsoft YaHei"); font.setPointSize(8); QFontMetrics fm(font); QRect rec = fm.boundingRect("这是要获取宽度和高度的字符串"); //字符串所占的像素宽度,高度 int textWidth = rec.width(); int textHeight = rec.height(); 方便用于delegate 

js获取字符串的字节长度

占用3个字节的范围 U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3 共 115 个 U+2F00 - U+2FD5 : 0xE2 0xBC 0x80 - 0xE2 0xBF 0x95 共 213 个 U+3005 - U+3029 : 0xE3 0x80 0x85 - 0xE3 0x80 0xA9 共 36 个 U+3038 - U+4DB5 : 0xE3 0x80 0xB8 - 0xE4 0xB6 0xB5 共 7549 个 U+4E00 -

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

1 Encoding.Default.GetByteCount(checkString);  =2 全角 =1 半角 /// <summary> /// 获取字符串的字节长度 /// </summary> /// <param name="str"></param> /// <returns></returns> public static int GetStringByteLength(this string s

获取字符串的长度

获取字符串的长度 php中有一个神奇的函数,可以直接获取字符串的长度,这个函数就是strlen(). 例子如下: $str = 'hello'; $len = strlen($str); echo $len;//输出结果是5 strlen函数对于计算英文字符是非常的擅长,但是如果有中文汉字,要计算长度该怎么办? 可以使用mb_strlen()函数获取字符串中中文长度. 例子如下: $str = "我爱你"; echo mb_strlen($str,"UTF8");/

黄聪:WordPress 多站点建站教程(六):使用WP_Query、switch_to_blog函数实现获取子站点分类中的文章

首先在你使用主题的funtions.php里面添加下代码: //根据时间显示最新的分类文章内容,每个站点显示一篇内容 //$blog_id 子站点ID //$catid 分类ID wp_reset_query(); switch_to_blog($blog_id); global $post;?> $my_query2 = new WP_Query('showposts=1&order=desc&orderby=date&cat='.$catid); while ($my_q

黄聪:《网站高转换率法则》#2:你的网站是垃圾站吗?

原文链接:http://user.qzone.qq.com/281808710/blog/1411485614 我们接着之前的话题继续聊聊. 我们先来看看,你的网站是否存在下面几个问题: 1.我的网站每天都有不少流量,但是我不懂怎么留住这些流量. 2.我不懂怎么让这些流量成交. 3.我不懂怎么让这些流量帮助我带来新的流量. 那么,这些站长为什么会苦恼于这几个问题呢?我们来试着寻找一下答案. 1.关于网站的那些事儿 在我看来,绝大多数存在以上问题的网站,一般都是这样诞生的: 无论哪个行业,你只要通

黄聪:如何用代码设置控制自己网站的网页在360浏览器打开时强制优先使用极速模式,而非兼容模式

最近用360浏览器访问自己的网站,发现都是被优先选用兼容模式打开,这使得网站很难看.为了让360浏览器打开网站的时候优先试用极速模式,找了一下官方论坛,发现了解决方案. 在head标签中添加一行代码: <html> <head> <meta name="renderer" content="webkit|ie-comp|ie-stand"> </head> <body> </body> <

《黄聪:手机移动站SEO优化教程》4、如何实现手机移动网站和PC站点的自主适配

转载:http://blog.csdn.net/dog250/article/details/6896949 UDP协议疑难杂症全景解析 2011-10-22 19:26 2989人阅读 评论(4) 收藏 举报 tcp网络算法交通socket通讯 如今,但凡说精通网络的,第二个意思就是"精通TCP",事实上,很多自称精通TCP的家伙们只是精通socket接口而已,对TCP行为精通的并不多,笔者也不算精通,但绝对是中等以上水平.如果你真的精通TCP行为,那么本文不读也罢,直接发邮件给我,

黄聪:如何删除wordpress登录之后wp_footer、wp_head自行加载的Open Sans字体、fonts.googleapis.com连接导致卡死的问题

有时候在浏览自己的WordPress网站时,发现网页长时间无响应, 卡在正在连接到fonts.googleapis.com ,如下图所示: 查看网页源码时,发现Head里面有如下一段代码: <link rel='stylesheet' id='open-sans-css' href='//fonts.googleapis.com/css?family=Open+Sans%3A300italic%2C400italic%2C600italic%2C300%2C400%2C600&subset=