c#中字体大小随控件的自动变化而变化。这个怎么实现啊。

wumin940590725 2013-04-09 08:49:56

这个是我做图时的原有比例

这个是我的窗体变化之后,label随form自动变化了,但是字体的大小却没有变化。这个要怎么修改啊
...全文
5115 30 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgzy0220 2014-06-12
  • 打赏
  • 举报
回复
在属性》文本里直接设置字体大小
wumin940590725 2013-10-22
  • 打赏
  • 举报
回复
引用 27 楼 assky124 的回复:
现在看得感觉和当初完全不同,当时太乱入了。谢谢。你这个方法能用。
assky124 2013-04-12
  • 打赏
  • 举报
回复
何为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;
   }
}
手敲的,可能有些错误,自己修正下。
wumin940590725 2013-04-12
  • 打赏
  • 举报
回复
引用 27 楼 assky124 的回复:
何为Font,字体。 比如同样的字体绘制“as”和“asdfghjkl”你说宽度能一样么,所以指定字体的宽度没有任何意义。 你选择了一种字体后,按指定字号绘制的文本的宽度就定死了,可以扩展一个方法 C# code?123456789private SizeF GetTextBounds(Font font,string txt){ Bitmap bmp = n……
你的意思是字体的长宽比是固定的,只要改长度宽度就自己改了。。。。。这个倒是简单的很。。。。。。我想多了。。。谢谢
wumin940590725 2013-04-11
  • 打赏
  • 举报
回复
引用 25 楼 mh_ma 的回复:
引用 4 楼 wumin940590725 的回复:引用 2 楼 assky124 的回复: sizeChange事件中 Font font = new Font("宋体",ctrl.Height -6); //具体效果自己调整下 这个事件是font的事件 ? 事件是窗体的,窗体大小改变,字体相应变化
sizechange这个事件是form的,font的变化是由font的height来控制的,但是一般像是控件的话是由width和height来确定二维的。那个font只有一个height是由什么确定的呢?一维??
王子文龙 2013-04-11
  • 打赏
  • 举报
回复
引用 4 楼 wumin940590725 的回复:
引用 2 楼 assky124 的回复: sizeChange事件中 Font font = new Font("宋体",ctrl.Height -6); //具体效果自己调整下 这个事件是font的事件 ?
事件是窗体的,窗体大小改变,字体相应变化
wumin940590725 2013-04-11
  • 打赏
  • 举报
回复
引用 22 楼 huda3016 的回复:
引用 21 楼 assky124 的回复:看情况了,如果横向文字过多,是要考虑的。可以用Graphics的MeasureString,计算出文本的宽度。然后用递归,逐步缩小字体,直到能完全显示。 跟我想法一样,自己画文字,可以实现自动适应
c#自己有font函数,只不过只有一个heigt,说是行距,这个让我觉得很纠结。。。不知道该和控件的高比呢还是宽比呢,因为宽和高相比你的比例是不确定的,所有要比最低的。我想要是能同时比就好了。
assky124 2013-04-10
  • 打赏
  • 举报
回复
所有代码都给了啊,拷到项目中,调试下,看看效果再说啊!
wumin940590725 2013-04-10
  • 打赏
  • 举报
回复
引用 21 楼 assky124 的回复:
看情况了,如果横向文字过多,是要考虑的。可以用Graphics的MeasureString,计算出文本的宽度。然后用递归,逐步缩小字体,直到能完全显示。
按你这么说,我就要不用滚动条,要不用autosize了。。。。。。。。。。
小西是二愣子 2013-04-10
  • 打赏
  • 举报
回复
引用 21 楼 assky124 的回复:
看情况了,如果横向文字过多,是要考虑的。可以用Graphics的MeasureString,计算出文本的宽度。然后用递归,逐步缩小字体,直到能完全显示。
跟我想法一样,自己画文字,可以实现自动适应
assky124 2013-04-10
  • 打赏
  • 举报
回复
看情况了,如果横向文字过多,是要考虑的。可以用Graphics的MeasureString,计算出文本的宽度。然后用递归,逐步缩小字体,直到能完全显示。
wumin940590725 2013-04-10
  • 打赏
  • 举报
回复
引用 19 楼 assky124 的回复:
乘以0.5神马意思不知道?就是按控件高度乘以0.5啊。Font字体的高度是按磅来的,磅和像素之间的转换自己google下。 在分辨率为96PX/英寸的显示器下,高度乘以0.5约是,字体高度占空间高度的65%
那么字体的横向大小不需要管吗?
assky124 2013-04-10
  • 打赏
  • 举报
回复
乘以0.5神马意思不知道?就是按控件高度乘以0.5啊。Font字体的高度是按磅来的,磅和像素之间的转换自己google下。 在分辨率为96PX/英寸的显示器下,高度乘以0.5约是,字体高度占空间高度的65%
wumin940590725 2013-04-10
  • 打赏
  • 举报
回复
引用 15 楼 assky124 的回复:
所有代码都给了啊,拷到项目中,调试下,看看效果再说啊!
所以你给的这个放大我知道,只不过比例怎么算我不清楚。因为font这个size或者height到底是什么意思我没搞懂。所以放大的比例我看着就觉得难受
wumin940590725 2013-04-10
  • 打赏
  • 举报
回复
引用 15 楼 assky124 的回复:
所有代码都给了啊,拷到项目中,调试下,看看效果再说啊!

我把比例系数改为0.5f之后出现的就是这样的。。。。。
wumin940590725 2013-04-10
  • 打赏
  • 举报
回复
引用 15 楼 assky124 的回复:
所有代码都给了啊,拷到项目中,调试下,看看效果再说啊!


但是你做的Font font = new Font(button1.Font.FontFamily,button1.Height * 0.5f);中的
button1.Height*0.5f是什么意思??
这个我要改变图形的大小,在panel中写的话和你是不一样的。所以我想知道你这个0.5f是什么意思
ctrl.Font=new Font(this.Font.Name,(ctrl.Height*scale[i++]));我是直接成比例系数,但是这个比例系数我找了半天没找到怎么算,都不太好
wumin940590725 2013-04-09
  • 打赏
  • 举报
回复
引用 3 楼 lzxue1989 的回复:
字体这个不好自动变化吧, 不过自己也可以在窗体中的 Resize 事件中去写代码, 一旦检测到窗体的大小有变化,窗体字体的大小就作相应的变化
字体的自动改变我要写在resize中,只是应该怎么写。。。我有这个事件。。。。。。。。panel.resize() 不写这个的话控件是不会随着像素变化而变化的。。。。现在只是控件变了而字体没有随着控件变化
wumin940590725 2013-04-09
  • 打赏
  • 举报
回复
引用 2 楼 assky124 的回复:
sizeChange事件中 Font font = new Font("宋体",ctrl.Height -6); //具体效果自己调整下
这个事件是font的事件 ?
csdn_风中雪狼 2013-04-09
  • 打赏
  • 举报
回复
字体这个不好自动变化吧, 不过自己也可以在窗体中的 Resize 事件中去写代码, 一旦检测到窗体的大小有变化,窗体字体的大小就作相应的变化
assky124 2013-04-09
  • 打赏
  • 举报
回复
sizeChange事件中 Font font = new Font("宋体",ctrl.Height -6); //具体效果自己调整下
加载更多回复(10)

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧