Здравствуйте bog, Вы писали:
bog>Как красиво изменить размер картинки. Использую StretchBlt — уменьшая пропорционально её размер вдвое — появляются артефакты. Плиз Хелп!!!!
Используй stretch из DirectDraw — там много разных опций.
>уменьшая пропорционально её размер вдвое — появляются артефакты
Так сложно сложить четыре точки и получить одну?
>Используй stretch из DirectDraw — там много разных опций.
Через DirectDraw не получится – Direct3D, и то придётся делать mip-map’ы, так что складывать четыре точки всё равно надо :)))))
Здравствуйте os77, Вы писали:
>>уменьшая пропорционально её размер вдвое — появляются артефакты O>Так сложно сложить четыре точки и получить одну?
>>Используй stretch из DirectDraw — там много разных опций. O>Через DirectDraw не получится – Direct3D, и то придётся делать mip-map’ы, так что складывать четыре точки всё равно надо :)))))
Старнно это — делал я через DirectDraw: обяъвдяешь два surface'а нужны размеров и делаешь Blt, при этом в отличии от делания руками, может сработать аппаратная оптимизация — если есть. А вот при чем тут Direct3D вообще не понятно.
Direct3D — малось не уневирсально и с версиями геморой. В любом случае лучше подстраховаться... То ли на www.codeproject.com, то ли на www.codeguru.com есть пирмеры довольно качественных БитБилдов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте bog, Вы писали:
bog>Как красиво изменить размер картинки. Использую StretchBlt — уменьшая пропорционально её размер вдвое — появляются артефакты. Плиз Хелп!!!!
а ::SetStretchBltMode(hDC, HALFTONE) ставишь? А то по умолчанию стоит BLACKONWHITE, совсем другая история.
Правда HALFTONE не реализован некоторыми архаичными превдо-ОС, но можно делать так:
if (false == ::SetStretchBltMode(hDCD, HALFTONE))
::SetStretchBltMode(hDCDest, COLORONCOLOR);