Информация об изменениях

Сообщение Re: Интересная и жизненная задача с полезным результатом от 16.11.2016 6:44

Изменено 16.11.2016 6:45 MBo

Здравствуйте, qwp, Вы писали:

qwp>Дано: пиксельная картинка произвольной формы на холсте с размерами Х*Y. Считаем, что координаты левого верхнего угла холста 0,0.

qwp>Задача: Найти максимальные стороны прямоугольника с заданным соотношением сторон k, полностью находящегося в картинке.

Wdt, Hgt — размеры картинки
ClientWidth, ClientHeight — размеры окна
X0, Y0 — координаты вывода в окно

 if ClientWidth * Hgt >= ClientHeight * Wdt then begin  //окно широкое, поля по бокам
    Y0 := 0;
    X0 := (ClientWidth - Wdt * ClientHeight div Hgt) div 2;
  end
  else begin  //окно узкое, поля сверху и снизу
    X0 := 0;
    Y0 := (ClientHeight - ClientWidth * Hgt div Wdt) div 2;
  end;
Re: Интересная и жизненная задача с полезным результатом
Здравствуйте, qwp, Вы писали:

S>Полагаю, речь идет о том, что бы отобразить некий объект (картинку) максимально "распахнутым" на экране/в окне, без искажения пропорций.

> Именно так.

Wdt, Hgt — размеры картинки
ClientWidth, ClientHeight — размеры окна
X0, Y0 — координаты вывода в окно

 if ClientWidth * Hgt >= ClientHeight * Wdt then begin  //окно широкое, поля по бокам
    Y0 := 0;
    X0 := (ClientWidth - Wdt * ClientHeight div Hgt) div 2;
  end
  else begin  //окно узкое, поля сверху и снизу
    X0 := 0;
    Y0 := (ClientHeight - ClientWidth * Hgt div Wdt) div 2;
  end;