日期:2014-05-17  浏览次数:21229 次

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,计算出文本的宽度。然后用递归,逐步缩小字体,直到能完全显示。
------解决方案--------------------
引用:
看情况了,如果横向文字过多,是要考虑的。可以用Graphics的MeasureString,计算出文本的宽度。然后用递归,逐步缩小字体,直到能完全显示。
 
跟我想法一样,自己画文字,可以实现自动适应
------解决方案--------------------
引用:
引用:
sizeChange事件中

Font font = new Font("宋体",ctrl.Height -6); //具体效果自己调整下
这个事件是font的事件

事件是窗体的,窗体大小改变,字体相应变化
------解决方案--------------------
何为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;
   }
}

手敲的,可能有些错误,自己修正下。