Нахождение и обеспечение соотношения сторон - PullRequest
2 голосов
/ 10 сентября 2010

У меня есть элемент управления в моей форме, и я хочу иметь возможность контролировать ширину, и изменить высоту элемента управления, чтобы сохранить исходное соотношение сторон. Это подводит меня к следующим вопросам:

Вопросы:

  • Как вы определяете точное соотношение сторон элемента управления?
  • Что мне делать в событии изменения размера, чтобы установить высоту в правильном направлении для новой ширины?

Ответы [ 2 ]

3 голосов
/ 10 сентября 2010

Соотношение сторон - это просто отношение одной оси к другой: ширина / высота.

Чтобы сохранить соотношение сторон при заданной цели (newWidth, newHeight), вам просто нужно убедиться, что (newWidth / newHeight) == (Ширина / Высота)

Для этого вам необходимо (например) решить, является ли ширина или высота наиболее важной осью.Если вы исправите ширину, то вы можете рассчитать высоту по ширине, чтобы сохранить соотношение сторон:

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);
}
1 голос
/ 10 сентября 2010

Соотношение сторон: ширина / высота. Например, размер экрана 640 x 480 составляет 4: 3 или 1,33333.

При загрузке формы вы можете сохранить соотношение сторон ваших элементов управления, разделив ширину на высоту и сохранив переменную, а затем при изменении размера формы сбросьте высоту каждого элемента управления в соответствии с сохраненным соотношением сторон, выполнив

myControl.Height = Math.Round(myControl.Width x mySavedRatio);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...