2

我的表单上有一个控件,我希望能够控制宽度,并让控件的高度更改以保持其原始纵横比。这让我想到了以下问题:

问题:

  • 您如何确定控件的确切纵横比?
  • 我在调整大小事件中如何将高度设置为新宽度的正确方面?
4

2 回答 2

3

纵横比只是一个轴与另一个轴的比率:宽度/高度。

要保留纵横比,给定目标 (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);
}
于 2010-09-09T21:39:35.700 回答
1

纵横比是宽度/高度。例如,640 x 480 尺寸的屏幕是 4:3 纵横比,或 1.33333。

在表单加载时,您可以通过将宽度除以高度并保留到变量来保持控件的纵横比,然后在表单调整大小时重置每个控件的高度以匹配保存的纵横比,方法是

myControl.Height = Math.Round(myControl.Width x mySavedRatio);
于 2010-09-09T21:30:51.440 回答