![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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, только что бы быстрее работала... а то как то для больших изображений думает долго
|