首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

如何实现文本宽度自适应

2012-03-12 
怎么实现文本宽度自适应?用Graphics.DrawString 方法画单行文本:有多个固定大小的Rectangle,想在里面画上

怎么实现文本宽度自适应?
用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年第一帖就不会 
郁闷!
------解决方案--------------------


不错,学习了。

热点排行