Рассчитать уровень масштабирования, чтобы разместить изображение на панели - PullRequest
3 голосов
/ 20 февраля 2012

Как можно рассчитать уровень масштабирования (графический масштаб), чтобы подогнать любое изображение к любой панели?

Размер изображения и размер изображения могут быть любыми.

Мне нужна следующая подпись метода:

  public float CalculateZoomToFit(Image image, Panel targetPanel)
  {
     // I need to calculate the zoom level to make the picture fit into the panel
     return ???
  }

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Отношение ширины к высоте как для панели, так и для изображения - ключ к ответу.

var panel_ratio = targetPanel.Width / targetPanel.Height;
var image_ratio = image.Width / image.Height;

return panel_ratio > image_ratio
     ? targetPanel.Height / image.Height
     : targetPanel.Width / image.Width
     ;

При необходимости добавьте проверки на ошибки деления на ноль.

0 голосов
/ 20 февраля 2012

В общем, это будет ширина или высота (в зависимости от того, что вы хотите разместить) контейнера, деленная на ширину или высоту объекта, который вы в него помещаете.Это даст вам настройку, необходимую для подгонки изображения.

...