c#中字体大小随控件的自动变化而变化。这个怎么实现啊。
本帖最后由 wumin940590725 于 2013-04-09 08:50:53 编辑
这个是我做图时的原有比例
这个是我的窗体变化之后,label随form自动变化了,但是字体的大小却没有变化。这个要怎么修改啊
C#
控件
字体
label
------解决方案--------------------sizeChange事件中
Font font = new Font("宋体",ctrl.Height -6); //具体效果自己调整下
------解决方案--------------------字体这个不好自动变化吧,
不过自己也可以在窗体中的 Resize 事件中去写代码,
一旦检测到窗体的大小有变化,窗体字体的大小就作相应的变化
------解决方案--------------------乘以0.5神马意思不知道?就是按控件高度乘以0.5啊。Font字体的高度是按磅来的,磅和像素之间的转换自己google下。
在分辨率为96PX/英寸的显示器下,高度乘以0.5约是,字体高度占空间高度的65%
------解决方案--------------------看情况了,如果横向文字过多,是要考虑的。可以用Graphics的MeasureString,计算出文本的宽度。然后用递归,逐步缩小字体,直到能完全显示。
------解决方案--------------------
跟我想法一样,自己画文字,可以实现自动适应
------解决方案--------------------
事件是窗体的,窗体大小改变,字体相应变化
------解决方案--------------------何为Font,字体。
比如同样的字体绘制“as”和“asdfghjkl”你说宽度能一样么,所以指定字体的宽度没有任何意义。
你选择了一种字体后,按指定字号绘制的文本的宽度就定死了,可以扩展一个方法
private SizeF GetTextBounds(Font font,string txt)
{
Bitmap bmp = new Bitmap(1,1);
using(Graphics g = Graphics.FromImage(bmp))
{
SizeF size = g.MeasureString(font,txt);
return size;
}
}
手敲的,可能有些错误,自己修正下。