Форум: "Media";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Вниз
масштабирование изображений Найти похожие ветки
← →
Strech (2005-06-23 02:07) [0]Приветствую, Мастера! Кто нибудь знает алгоритмы сжатия/растяжения цветных изображений? Функция StretchBlt слишком сильно искажает цвета и появляются артефакты. Не помогает даже режим SetStretchBltMode(DC, COLORONCOLOR)
← →
WondeRu © (2005-06-23 15:34) [1]покажи код... может DC не тот?
← →
AYA (2005-06-23 21:12) [2]Смотри исходники Graphics32, JanFX - там примеры с использованием сглаживания при растяжении, и множество других визуальных эффектов
← →
Strech (2005-06-24 02:15) [3]куски кода, использую DirectX:
FDDSBack: IDirectDrawSurface7;
hBMP: HBITMAP;
hdcImage, DC: HDC;
hBMP := LoadImage(...); //картинка 200х200
if FDDSBack.GetDC(DC) = DD_OK then
begin
hdcImage := CreateCompatibleDC(DC);
SelectObject(hdcImage, hBMP);
SetStretchBltMode(DC, COLORONCOLOR);
StretchBlt(DC, 0, 0, 100, 100, hdcImage, 0, 0, 200, 200, SRCCOPY);
DeleteDC(hdcImage);
FDDSBack.ReleaseDC(DC);
end;
DeleteObject(hBMP);
если выводить кусок картинки 100х100 - все в норме, а при масштабировании появляются лишние точки. Например, если общий тон картинки фиолетовый, то появляется много красных точек. В исходном изображении красных точек вообще нет. Причем если убрать режим COLORONCOLOR, то артефактов еще больше.
>AYA исходники посмотрю, спасибо
← →
Sapersky (2005-06-24 12:04) [4]Большинство современных карт делают вполне приличный Stretch при блиттинге. Т.е., как вариант, создать маленькую поверхность, скопировать в неё, оттуда Blt в большую.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.033 c