Сообщение 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 — координаты вывода в окно
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 — координаты вывода в окно
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;