.net怎么样截取字符串 能按照字符的长度来截取 不按照字符的个数 有什么自带的方法吗 不用string.substrin
发布网友
发布时间:2022-04-26 00:19
我来回答
共1个回答
热心网友
时间:2022-04-26 01:48
我知道你的意思,按"长度"取字符,但是这样很复杂的,因为字符的宽度是和字符所使用的字符集有关,在这个基础上获取宽度,和单个字符的宽度,然后在落实到substring的字符个数上
转一个吧
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);
}