我的表单上有一个控件,我希望能够控制宽度,并让控件的高度更改以保持其原始纵横比。这让我想到了以下问题:
问题:
- 您如何确定控件的确切纵横比?
- 我在调整大小事件中如何将高度设置为新宽度的正确方面?
我的表单上有一个控件,我希望能够控制宽度,并让控件的高度更改以保持其原始纵横比。这让我想到了以下问题:
纵横比只是一个轴与另一个轴的比率:宽度/高度。
要保留纵横比,给定目标 (newWidth, newHeight),您只需确保 (newWidth/newHeight) == (Width/Height)
为此,您必须(例如)决定宽度或高度是最重要的轴。如果固定宽度,则可以从宽度计算高度以保留纵横比:
newWidth = newWidth;
newHeight = newWidth * (Height / Width)
要强制执行此操作,您只需要坐在 Resize 事件上,以便在尝试调整控件大小时控制大小:
private void Form1_Resize(object sender, System.EventArgs e)
{
sender.Size = new Size(control.Size.Width, control.Size.Width * desiredAspectRatio);
}
纵横比是宽度/高度。例如,640 x 480 尺寸的屏幕是 4:3 纵横比,或 1.33333。
在表单加载时,您可以通过将宽度除以高度并保留到变量来保持控件的纵横比,然后在表单调整大小时重置每个控件的高度以匹配保存的纵横比,方法是
myControl.Height = Math.Round(myControl.Width x mySavedRatio);