Масштабирование изображения до холста фиксированного размера в .NET - PullRequest
0 голосов
/ 27 июля 2011

У меня есть холст фиксированного размера (например, слайд презентации). Нужно встраивать картинку без каких-либо качественных искажений. Если изображение меньше, чем холст, оно должно быть отцентрировано. Если оно больше, оно должно быть уменьшено до размера.

Существует ли какой-нибудь надежный алгоритм или я должен его создать с нуля?

1 Ответ

0 голосов
/ 27 июля 2011

Масштабирование, которое вам нужно, это просто

scale = desired size / actual size

Чтобы избежать искажений, вы применяете одну и ту же шкалу как к высоте, так и к ширине.

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

if (height > width)
{
    scale = desiredHeight / actualHeight;
}
else
{
    scale = desiredWidth / actualWidth;
}

Убедитесь, что вы преобразовали высоту и ширину в значения double, чтобы избежать целочисленной арифметики.

...