字体大小自动随宽度和内容改变
2013-09-02 16:44
260 查看
字体的大小设定可以在开始的时候指定.但是有时候需要根据窗口或者文字的长短来指定.那么这个时候就需要用到时间Paint了. 继承与Control的控件都有这个事件.也可以override OnPaint函数. 主要考虑两个因素,宽度和高度.比方如果字体的长度小于一个比例,则增加字体大小.如果大于一个比例则减小字体.
高度也是同样的道理.控制在一个比例范围以内就可以了
高度也是同样的道理.控制在一个比例范围以内就可以了
/// <summary> /// 标题重绘时候的处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void txtTitle_Paint(object sender, PaintEventArgs e) { var lbl = sender as Label; if (lbl == null) { return; } var size = MeasureStringWidth(lbl.Text, e.Graphics, lbl.Font); float diff = size.Width / lbl.Width; var font = lbl.Font; while ((diff > 0.6 || diff < 0.4)) { font = new Font(font.Name, diff > 0.5 ? font.Size - 1 : font.Size + 1, font.Style); size = MeasureStringWidth(lbl.Text, e.Graphics, font); if (size.Height > lbl.Height) { font = new Font(font.Name, diff > 0.5 ? font.Size + 1 : font.Size - 1, lbl.Font.Style); break; } if (font.Size < 5) { break; } diff = size.Width / lbl.Width; } lbl.Font = font; } /// <summary> /// 获得文字的高宽 /// </summary> /// <param name="text">文字内容</param> /// <param name="graphic">绘画</param> /// <param name="font">字体</param> /// <returns>大小</returns> public static SizeF MeasureStringWidth(string text, Graphics graphic, Font font) { SizeF tmpSize = System.Windows.Forms.TextRenderer.MeasureText(text, font); return tmpSize; }
相关文章推荐
- 窗体缩放自动改变内容宽度
- Android textview自适应宽度自动调整字体大小
- 自动识别分辨率或浏览器窗口大小,读取不同样式名/一行内超出宽度的内容显示用...
- iOS UILabel根据文本宽度改变字体大小
- 根据屏幕宽度自动适配字体大小,一次使用终身难忘!
- TextView部分内容改变颜色,背景色,大小,字体,超链接,删除线,下划线,添加图片
- Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小
- MFC改变static text颜色和内容及字体大小
- 背景图片有边框线条. 内容自动适应. 自动随窗口宽度的改变而改变.
- AutoFitTextView-根据文本内容自动调整字体大小的TextView
- Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小
- Android改变字体大小,适应区域宽度
- Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小
- wpf 中借助 Grid 实现随着 Form 大小变化而按比例自动改变宽度或高度。
- Jquery实现<textarea>根据内容自动改变大小
- WinForm的自动缩放(跟随系统字体大小的改变)
- 解决了CListCtrl控件当字体改变后,自动调整每行的宽度的问题.
- table中表格内的内容自动换行不改变表格宽度
- jquery 自动改变字体大小
- Iframe页面内容变更页面自动改变大小(非加载时自适应大小)