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

wumin940590725 2013-04-09 08:49:56

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

这个是我的窗体变化之后,label随form自动变化了,但是字体的大小却没有变化。这个要怎么修改啊
...全文
4714 30 打赏 收藏 转发到动态 举报
写回复
用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)
C#件大全 、窗体 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序可通过Name属性来引用窗体。 (2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种: Normal (窗体正常显示)、 Minimized (窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示)。 (3)StartPosition属性:用来获取或设置运行时窗体的起始位置。 (4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏显示的文字。 (5)Width属性:用来获取或设置窗体的宽度。 (6)Height属性:用来获取或设置窗体的高度。 (7)Left属性:用来获取或设置窗体的左边缘的x坐标(以像素为单位)。 (8)Top属性:用来获取或设置窗体的上边缘的y坐标(以像素为单位)。 (9)ControlBox属性:用来获取或设置一个值,该值指示在该窗体的标题栏是否显示制框。值为true 时将显示制框,值为false时不显示制框。 (10)MaximizeBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏显示最大化按钮。值 为 true时显示最大化按钮,值为false时不显示最大化按钮。 (11)MinimizeBox 属性:用来获取或设置一个值,该值指示是否在窗体的标题栏显示最小化按钮。值 为 true时显示最小化按钮,值为false时不显示最小化按钮。 (12)AcceptButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Enter 键时就相 当于单击了窗体上的该按钮。 (13)CancelButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Esc 键时就相当 于单击了窗体上的该按钮。 (14)Modal 属性:该属性用来设置窗体是否为有模式显示窗体。如果有模式地显示该窗体,该属性值为 true;否则为 false。当有模式地显示窗体时,只能对模式窗体上的对象进行输入。必须隐藏或关闭模式窗 体(通常是响应某个用户操作),然后才能对另一窗体进行输入。有模式显示的窗体通常用做应用程序 的对话框。 (15)ActiveControl属性:用来获取或设置容器的活动件。窗体也是一种容器件。 (16)ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。 (17)AutoScroll 属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。如果此属性值设置为 true,则当任何件位于窗体工作区之外时,会在该窗体上显示滚动条。另外,当自动滚动打开时,窗体 的工作区自动滚动,以使具有输入焦点的件可见。 (18)BackColor属性:用来获取或设置窗体的背景色。 (19)BackgroundImage属性:用来获取或设置窗体的背景图像。 (20)Enabled 属性:用来获取或设置一个值,该值指示件是否可以对用户交互作出响应。如果件可 以对用户交互作出响应,则为 true;否则为false。默认值为true。 (21)Font属性:用来获取或设置件显示的文本的字体。 (22)ForeColor属性:用来获取或设置件的前景色。 (23)IsMdiChild属性:获取一个值,该值指示该窗体是否为多文档界面(MDI)子窗体。值为 true时, 是子窗体,值为false时,不是子窗体。 (24)IsMdiContainer 属性:获取或设置一个值,该值指示窗体是否为多文档界面(MDI)的子窗体的 容器。值为true时,是子窗体的容器,值为false时,不是子窗体的容器。 (25)KeyPreview属性:用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的件前,窗体 是否将接收该事件。值为true时,窗体将接收按键事件,值为false时,窗体不接收按键事件。 (26)MdiChildren属性:数组属性。数组的每个元素表示以此窗体作为父级的多文档界面(MDI)子窗 体。 (27)MdiParent属性:用来获取或设置此窗体的当前多文档界面(MDI)父窗体。 (28)ShowInTaskbar属性:用来获取或设置一个值,该值指示是否在Windows任务栏显示窗体。 (29)Visible属性:用于获取或设置一个值,该值指示是否显示该窗体或件。值为true 时显示窗体或件,为 false时不显示。 (30)Capture属性:如果该属性值为true,则鼠标就会被限定只由此件响应,不管鼠标是否在此件的 范围内。 2、常用方法 下面介绍一些窗体的最常用方法。 (1)Show方法:该方法的作用是让窗体显示出来,其调用格式为: 窗体名.Show(); 其窗体名是要显示的窗体名称。 (2)Hide方法:该方法的作用是把窗体隐藏出来,其调用格式为: 窗体名.Hide(); 其窗体名是要隐藏的窗体名称。 (3)Refresh方法:该方法的作用是刷新并重画窗体,其调用格式为: 窗体名.Refresh(); 其窗体名是要刷新的窗体名称。 (4)Activate方法:该方法的作用是激活窗体并给予它焦点。其调用格式为: 窗体名.Activate(); 其窗体名是要激活的窗体名称。 (5)Close方法:该方法的作用是关闭窗体。其调用格式为: 窗体名.Close(); 其窗体名是要关闭的窗体名称。 (6)ShowDialog方法:该方法的作用是将窗体显示为模式对话框。其调用格式为: 窗体名.ShowDialog(); 3.常用事件 (1)Load事件:该事件在窗体加载到内存时发生,即在第一次显示窗体前发生。 (2)Activated事件:该事件在窗体激活时发生。 (3)Deactivate事件:该事件在窗体失去焦点成为不活动窗体时发生。 (4)Resize事件:该事件在改变窗体大小时发生。 (5)Paint事件:该事件在重绘窗体时发生。 (6)Click事件:该事件在用户单击窗体时发生。 (7)DoubleClick事件:该事件在用户双击窗体时发生。 (8)Closed事件:该事件在关闭窗体时发生。 文本框类件 2、Label 件 1、常用属性: (1)Text属性:用来设置或返回标签显示的文本信息。 (2)AutoSize 属性:用来获取或设置一个值,该值指示是否自动调整件的大小以完整显示其内容。取 值为 true时,件将自动调整到刚好能容纳文本时的大小,取值为false时,件的大小为设计时的大小。 默认值为false。 (3)Anchor 属性:用来确定此件与其容器件的固定关系的。所谓容器件指的是这样一种情况:往 往在件之还有一个件,例如最典型的就是窗体会包含很多的件,像标签件、文本框等。 这时称包含件的件为容器件或父件,而父件称为子件。这时将遇到一个问题,即子件与父 件的位置关系问题,即当父件的位置、大小变化时,子件按照 什么样的原则改变其位置、大小。Anchor属性就规定了这个原则。 对于 Anchor 属性,可以设定 Top、Bottom、Right、Left 的任意几 种,设置的方法是在属性窗口单击Anchor属性右边的箭头,将会 出现如图 9-6 的窗口,通过它可设置 Anchor 属性值。图 9-6 变黑的方位即为设定的方位制,即图所示的为 Left、Right、 Bottom。此时,如果父窗口变化,子窗口将保证其左边缘与容器左边 的距离、上边缘与容器上边的距离、底边与容器底边的距离等不变, 效果如图9-7 所示。

110,549

社区成员

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

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

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