请教一个问题,怎么让winform窗体中所有控件和字体随窗口一起变大变小?

zhlin118 2012-09-12 04:46:46
我现在要把系统窗口输出到电视上,怎么让程序输出到电视上时窗体中的控件和字体也按照相应的比例自动变大??
窗体设置最大化后,控件中的行高,还有字体都没有变化!求大侠指点!! - -
...全文
296 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sisuo366 2014-05-29
  • 打赏
  • 举报
回复
LZ你好,请问怎么解决的。怎么我运行到string[] mytag = con.Tag.ToString().Split(new char[] { ' ' }); 这句的时候就报错了。 1 用tag的时候,报错“未将对象引用设置到对象的实例。”。 2 如果修改为text的时候,下面的newx又会报错。。 这段代码的含义是说,将控件中的字体,为对象缩放了4个方向,但是申请X和Y的时候,做的是分母啊。。这么弄有什么意义? 不知道LZ怎么修改的代码实现了功能,请赐教。谢谢!
zhlin118 2012-09-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

呵呵,是不是直接连到电视上调程序
[/Quote]
不是,把程序设置到扩展屏幕上输出到电视~
缘中人 2012-09-12
  • 打赏
  • 举报
回复
呵呵,是不是直接连到电视上调程序
zhlin118 2012-09-12
  • 打赏
  • 举报
回复


private float X, Y;
private void setTag(Control cons)
{
foreach (Control con in cons.Controls)
{
con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size;
if (con.Controls.Count > 0)
setTag(con);
}
}

private void setControls(float newx, float newy, Control cons)
{
foreach (Control con in cons.Controls)
{

string[] mytag = con.Tag.ToString().Split(new char[] { ':' });
float a = Convert.ToSingle(mytag[0]) * newx;
con.Width = (int)a;
a = Convert.ToSingle(mytag[1]) * newy;
con.Height = (int)(a);
a = Convert.ToSingle(mytag[2]) * newx;
con.Left = (int)(a);
a = Convert.ToSingle(mytag[3]) * newy;
con.Top = (int)(a);
Single currentSize = Convert.ToSingle(mytag[4]) * newy;
con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
if (con.Controls.Count > 0)
{
setControls(newx, newy, con);
}
}

}

private void FrmClinicalTV_Load(object sender, EventArgs e)
{
this.Resize += new EventHandler(FrmClinicalTV_Resize);

X = this.Width;
Y = this.Height;
// y = this.statusStrip1.Height;
setTag(this);
}

private void FrmClinicalTV_Resize(object sender, EventArgs e)
{
// throw new Exception("The method or operation is not implemented.");
float newx = (this.Width) / X;
// float newy = (this.Height - this.statusStrip1.Height) / (Y - y);
float newy = this.Height / Y;
setControls(newx, newy, this);
this.Text = this.Width.ToString() + " " + this.Height.ToString();
}




Down了一段代码,问题已经解决,谢谢各位!不知道有没有更优化的方法~~
熙风 2012-09-12
  • 打赏
  • 举报
回复
设置Anchor属性
zhanglong19891129 2012-09-12
  • 打赏
  • 举报
回复
Dock或者Anchor这个东西好像不能按照比例来缩放吧??
bdmh 2012-09-12
  • 打赏
  • 举报
回复
行高和字体都要根据具体尺寸设置
  • 打赏
  • 举报
回复
控件的话,你需要设置Dock或者Anchor属性,随主窗体变化而按比例填充,至于字体,我想你需要自己根据控件的Resize事件来自行设置吧.

110,536

社区成员

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

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

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