|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Картинка теряет в качестве при уменьшении
Использую Dephi2007. Изображения в отличном качестве, но когда загружаю их в Timage, используя Propirtianal:=true; что бы маштабировать в уменьшеном размере, они как то преобразуються странно и выглядят совсем не очень,причем некоторые отображаються без потери качества, другие же пикселяться что-ли. Перепробывал все параметры которые только нашёл, но разобраться не получаеться. Может, кто знает как уменьшать картинки на форме не теряя качества.
|
#2
|
|||
|
|||
Используй GDI функции StretchBlt и SetStretchBltMode для качественного ресайза либо библиотеки GDI+, FastDIB, GraphicEx, Graphics32.
|
#3
|
|||
|
|||
Цитата:
Тут оказываеться целая наука! |
#4
|
|||
|
|||
Ребята, я непробиваемый, посмотрел эти функции но никак не могу связать. Там одна для библиотека для больших картинок от 300 на 300 пикс GDI+ называеться, а у меня меньше изображениянемного. StretchBlt и SetStretchBltMode я так понял для canvas,а у меня TImage. Вот как применить StretchBlt TImage никак не получаеться найти.
|
#5
|
||||
|
||||
Код:
TImage.Canvas Помогаю за Спасибо |
#6
|
|||
|
|||
пример:
Код:
procedure resize_img(img: TImage; nx, ny: integer); var t: TBitmap; h: THandle; scale: double; begin if img.Proportional then begin scale:=max(img.Height/ny, img.Width/nx); if scale<1 then scale:=1; nx:=trunc(img.Width/scale); ny:=trunc(img.Height/scale); end; t:=TBitmap.Create; t.Assign(img.Picture.Graphic); t.PixelFormat:=pf24bit; h:=t.Canvas.Handle; SetStretchBltMode(h, HALFTONE); StretchBlt(h, 0,0,nx,ny, h, 0,0,t.Width,t.Height, SRCCOPY); t.Width:=nx; t.Height:=ny; img.Picture.Assign(t); t.Free; end; |
#7
|
|||
|
|||
Цитата:
Спасибо!, отличный пример, только я не разобрался, что это за цикл с условием который в начале процедуры идет, делфи мне подчеркивет в слове max, но впринципе и без этого цикла прекрасно работает! |
#8
|
|||
|
|||
Условие проверяет флаг Proportional у имиджа и подгоняет размеры с учетом пропорций если это требуется, функция max находится в модуле Math.
|
#9
|
|||
|
|||
Спасибо!!!
|