|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Уменьшение размера изображения
Здравствуйте форумчане!) Мне нужна функция(Типо StretchDraw) для качественного уменьшения изображения... Помогите пожалуйста, кто знает)
Кому я должен - всем прощаю!!!! Последний раз редактировалось <<D>>, 12.04.2009 в 04:23. Причина: Орф ошибка |
#2
|
|||
|
|||
А вот это вам не подойдет? То, что качество уменьшенной картинки там точно получается выше, чем при использовании StretchDraw, я сама проверила. =)
Только процедурка может потребовать небольшой доработки... Я переделала ее так, чтобы изображения передавались как параметры по ссылке, а не по значению. Код:
procedure ResizeBitmap(const imgo: TBitmap; var imgd: TBitmap; nw, nh: Integer); |
#3
|
||||
|
||||
Можно изменить BltMode ( SetStretchBltMode() ) на STRETCH_HALFTONE, если не ошибаюсь, и копировать через StretchBlt(). Тоже получите сглаживание.
Цитата:
_____________ Вот кстати и пример, только что проверил - отлично сглаживает. Код:
var PrevStretchBltMode : Integer; begin PrevStretchBltMode := SetStretchBltMode(Canvas.Handle, STRETCH_HALFTONE);//устанавливаем режим сглаживания Canvas.CopyRect( rect(0, 0, ClientWidth, ClientHeight), Image1.Picture.Bitmap.Canvas, Rect(0,0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height)); SetStretchBltMode(Canvas.Handle, PrevStretchBltMode );//Восстанавливаем предыдущий ражим сглаживания ...сказал, и загрустил от бесспорной своей правоты Последний раз редактировалось 0nni, 12.04.2009 в 18:32. |
#4
|
||||
|
||||
Спасибо Nyctos Kasignete за ф-цию) То что мне надо!))
0nni , немного не подходит мне из-за того что работает ток с CopyRect...(Пробовал с StretchDraw - не фурычит) Кому я должен - всем прощаю!!!! |
#5
|
||||
|
||||
А есть ли функция типо той что мне посоветовала Nyctos Kasignete, только что бы быстрее работала... а то как то для больших изображений думает долго
Кому я должен - всем прощаю!!!! |