怎么实现文本宽度自适应?
用Graphics.DrawString 方法画单行文本:
有多个固定大小的Rectangle,想在里面画上不同的文本,字体已知,但是,当使用已知字体drawString时,如果rectangle的宽度不足以显示完文本时,将自动缩小字体,或者把文字的宽度变得窄一些,以显示完文本。请问该怎么办呢?
由于需要显示文本的Rectangle比较多,所以要考虑解决方法的性能,多谢!
[解决办法]
计算字符和长度,根据长度设置字体大小。通过传递长度和字体到方法实现。
[解决办法]
计算字符大小有什么好方法吗?
[解决办法]
你有Graphics了 你用_Graphics.MeasureString 获取下判断下就不行了
[解决办法]
http://topic.csdn.net/u/20081209/12/31eda7a5-378e-4b9b-9c60-9b62250f3814.html
[解决办法]
- C# code
private FontUnit MN_GetFontSize(string P_String) { Size size_2; Bitmap _bitmap = new Bitmap(Convert.ToInt32(this.Width.Value), Convert.ToInt32(this.Height.Value)); Graphics _graphics = Graphics.FromImage(_bitmap); float fontsize = 0.1f; SizeF _sizef = new SizeF(); do { Font font_1 = new Font("Arial", fontsize); _sizef = _graphics.MeasureString(P_String, font_1); fontsize += 0.1f; Size size_1 = _sizef.ToSize(); if (size_1.Height > Convert.ToInt32(this.Height.Value)) { break; } size_2 = _sizef.ToSize(); } while (size_2.Width <= Convert.ToInt32(this.Width.Value)); return new FontUnit(Convert.ToInt32((double) (fontsize - 0.1))); }
[解决办法]
不会,帮顶!
[解决办法]
先按某个固定大小的画,然后保存成图片形式,再加载进来。
[解决办法]
Graphics.MeasureString
[解决办法]
学习。
[解决办法]
- C# code
/// <summary>/// 获取字体/// </summary>/// <param name="s">字符串容器Size</param>/// <param name="P_String">字符串内容</param>/// <param name="sFontName">字体名称</param>/// <returns></returns>private Font GetFont(Size s ,string P_String,string sFontName){ Bitmap _bitmap = new Bitmap(s.Width, s.Height); Graphics _graphics = Graphics.FromImage(_bitmap); float fontsize = 0.1f; for(Size _size = new Size();_size.Width<s.Width && _size.Height <s.Height;fontsize += 0.1f) { Font font_1 = new Font(sFontName, fontsize); _size = _graphics.MeasureString(P_String, font_1).ToSize(); } return new Font(sFontName,fontsize - 0.2f);}private void Form1_Load(object sender, System.EventArgs e){ label1.Text = "测试字符..."; label1.Font = GetFont(label1.Size,label1.Text,"宋体");}
[解决办法]
学习
[解决办法]
ding
[解决办法]
xuexi!
[解决办法]
09年第一帖就不会
郁闷!
帮顶
[解决办法]
09年第一帖就不会
郁闷!
------解决方案--------------------
不错,学习了。