public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
} /// <summary>
/// 0:界面1;1:界面2;2:界面3;
/// </summary>
private int _UIFlag = 0;
/// <summary>
/// 刷新界面控件
/// </summary>
private void RefreshUI()
{
if (_UIFlag == 0)
{
btn_Enter.Visible = true;
btn_Office.Visible = false;
btn_Name.Visible = false;
btn_Num.Visible = false;
}
else if (_UIFlag == 1)
{
btn_Enter.Visible = false;
btn_Office.Visible = true;
btn_Name.Visible = true;
btn_Num.Visible = true;
}
} /// <summary>
/// 刷新界面控件大小和位置
/// </summary>
private void RefreshUIPosition()
{ //界面缩放后,button的位置和大小随之改变
} private void btn_Enter_Click(object sender, EventArgs e)
{
this.BackgroundImage = System.Drawing.Image.FromFile(@"F:\image\版面-02.jpg");
_UIFlag = 1;
RefreshUI();
}
private void Form4_ClientSizeChanged(object sender, EventArgs e)
{
RefreshUIPosition();
}
求大神,这是部分代码。。主要想实现改变了背景大小后,怎么使背景上的button按钮也会改变大小
{
public Form4()
{
InitializeComponent();
} /// <summary>
/// 0:界面1;1:界面2;2:界面3;
/// </summary>
private int _UIFlag = 0;
/// <summary>
/// 刷新界面控件
/// </summary>
private void RefreshUI()
{
if (_UIFlag == 0)
{
btn_Enter.Visible = true;
btn_Office.Visible = false;
btn_Name.Visible = false;
btn_Num.Visible = false;
}
else if (_UIFlag == 1)
{
btn_Enter.Visible = false;
btn_Office.Visible = true;
btn_Name.Visible = true;
btn_Num.Visible = true;
}
} /// <summary>
/// 刷新界面控件大小和位置
/// </summary>
private void RefreshUIPosition()
{ //界面缩放后,button的位置和大小随之改变
} private void btn_Enter_Click(object sender, EventArgs e)
{
this.BackgroundImage = System.Drawing.Image.FromFile(@"F:\image\版面-02.jpg");
_UIFlag = 1;
RefreshUI();
}
private void Form4_ClientSizeChanged(object sender, EventArgs e)
{
RefreshUIPosition();
}
求大神,这是部分代码。。主要想实现改变了背景大小后,怎么使背景上的button按钮也会改变大小
{
frm.Tag = frm.Width.ToString() + "," + frm.Height.ToString();
frm.SizeChanged += new EventHandler(frmScreen_SizeChanged); }
private void frmScreen_SizeChanged(object sender, EventArgs e)
{
if (flage == 1)
{
flage++;
string[] tmp = ((Form)sender).Tag.ToString().Split(',');
float width = (float)((Form)sender).Width / (float)Convert.ToInt16(tmp[0]);
float heigth = (float)((Form)sender).Height / (float)Convert.ToInt16(tmp[1]);
((Form)sender).Tag = ((Form)sender).Width.ToString() + "," + ((Form)sender).Height;
foreach (Control control in ((Form)sender).Controls)
{
control.Scale(new SizeF(width, heigth));
}
}
}
如原先窗体大小为:640,400.
button位置为100,100;Width:100;Height:100.窗体大小改变为1280,800后,button该如何改变?求代码以上只是简单举例,实际BUTTON有20多个。所以不能够用Anchor来改变左右位置。。
{
float x = this.Width / oldsize.Width; //oldsize为窗口原来大小
float y = this.Height / oldsize.Height;
foreach (Control ctr in this.Controls)
{
if (ctr.GetType() == typeof(Button))
{
ctr.Left = (int)(ctr.Location.X * x);
ctr.Top = (int)(ctr.Location.Y * y);
ctr.Width = (int)(ctr.Width * x);
ctr.Height = (int)(ctr.Height * y);
}
oldsize = this.Size;
}
}
都没研究下xaml,
将简单的功能复杂化,
你只需要将button放在一个容器里如DockPanel,
再设置一下DockPanel的Transform,
用放大镜ScaleTransform缩放即可
我从我的代码中复制了一段用Slider 控制TabControl缩放的片段:<Slider x:Name="uiScaleSlider"
Grid.Column="1"
SmallChange="0.1"
LargeChange="1"
Minimum="1"
Maximum="10"
Value="2"
Margin="5"/>
<TabControl.LayoutTransform>
<ScaleTransform CenterX="0"
CenterY="0"
ScaleX="{Binding ElementName=uiScaleSlider,Path=Value}"
ScaleY="{Binding ElementName=uiScaleSlider,Path=Value}"/>
</TabControl.LayoutTransform>