我只能确定文字的起始位置,想实现的效果是文字居中,我的思路是计算出文字的长度然后起始位置往前移动一半
java中实现的方法是FontMetrics.stringWidth
补充,我写的内容不是form也不是web,不要跟我说控件或html里面的内容
c#计算文字打印长度
答案:2 悬赏:70 手机版
解决时间 2021-04-06 08:12
- 提问者网友:蓝莓格格巫
- 2021-04-05 07:56
最佳答案
- 五星知识达人网友:佘樂
- 2021-04-05 08:22
textBox1.Text = "hello World!";
//width:6.15px=1Byte 一般,6.15个像素的宽度等于1个字节的宽度。所以可以使用下面的方式而不指定TextBox的MaxLength属性,推荐。
string space = new string(' ', Convert.ToInt32(((textBox1.Width / 6.15) - Encoding.GetEncoding("gb2312").GetBytes(textBox1.Text).Length) / 2));
//也可以这么做,不过事先需要指定TextBox的MaxLength属性,使其宽度正好和字符的最大数一致,不推荐,根据情况而定。
//string space = new string(' ', Convert.ToInt32((textBox1.MaxLength - Encoding.GetEncoding("gb2312").GetBytes(textBox1.Text).Length) / 2));
textBox1.Text = space + textBox1.Text;
//Encoding.GetEncoding是获取真实字节长度,因为每个中文字符和标点都占用两个字节。
//width:6.15px=1Byte 一般,6.15个像素的宽度等于1个字节的宽度。所以可以使用下面的方式而不指定TextBox的MaxLength属性,推荐。
string space = new string(' ', Convert.ToInt32(((textBox1.Width / 6.15) - Encoding.GetEncoding("gb2312").GetBytes(textBox1.Text).Length) / 2));
//也可以这么做,不过事先需要指定TextBox的MaxLength属性,使其宽度正好和字符的最大数一致,不推荐,根据情况而定。
//string space = new string(' ', Convert.ToInt32((textBox1.MaxLength - Encoding.GetEncoding("gb2312").GetBytes(textBox1.Text).Length) / 2));
textBox1.Text = space + textBox1.Text;
//Encoding.GetEncoding是获取真实字节长度,因为每个中文字符和标点都占用两个字节。
全部回答
- 1楼网友:举杯邀酒敬孤独
- 2021-04-05 09:35
c# 不支持。
要的话,只能在 paint 事件里, 用 gdi+ 自己画
--------------------------------------------------
private void form1_paint(object sender, painteventargs e)
{
e.graphics.drawstring("我是画的字符串", new font(fontfamily.genericsansserif, 18),
brushes.crimson, 50, 100);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯