Добрый день, вопрос в следующем: как можно сохранить растянутое изображение средствами GDI+. Поясню: мы можем выводить в произвольную область изображение с помощью DrawImage, но как сохранить изображение на жесткий диск в нужных пропорциях? Понятно, что можно сохранить процедурой Save, но она сохраняет то изображение, что было загружено перед этим в Image, точней первоначальных размеров.
Для чего это нужно? Есть программа с фоновой картинкой (которая сейчас выводится через обычную TCanvas), но т.к. программа может работать под различными разрешениями, соотвественно картинку приходится тянуть. Я взял некий средний размер (1280*1024 - для классических мониторов и 1280*800 для широкоформатных) для фоновой картинки, и соответственно расстягиваю картинку по всему экрану. Проблема в том, что на меньших разрешениях, качество картинки сильно падает (вывожу с помощью Canvas.StretchDraw), т.к. на фоне присутствует текст, и верхняя часть букв как бы "съедается". Но воспользовавшись DrawImage из GDI+, результат получается отличный по качеству вывода, но есть некоторые глюки, в которые я сейчас вдаваться не буду, плюс, что самое главное, на форме присутствуют TImage (кнопки), и у них качество еще больше ухудшается. Поэтому возникла мысль, что перед непосредственным запуском программы, масштабировать всю графику (картинок не много), а затем классическим спосом - через TCanvas - отображать уже отмасштабированные картинки. Либо тогда может посоветуете хороший алгоритм для сглаживания, т.к. по сути только это и нужно (алгоритм, которым я пользовался не выдавал нужного результата, просто размывал картинку)? |