Здраствуйте!
Гружу кадры из GIFки при помощи
WIC в отдельные HBITMAP — всё нормально, отображаются как надо:
| Скрытый текст |
| |
| |
Пытаюсь создать одно изображение изо всех кадров. Создаю большую битмапку, делаю для неё HDC, делаю селект битмапки туда.
Потом в цикле делаю рисование, как на экран
| Скрытый текст |
| if (!bRescaleFrames)
{
BitBlt( dstDcAuto.get(), targetImagePos.width, targetImagePos.height // hdc назначения и положение в нём
, targetImageSize.width, targetImageSize.height
, srcDcAuto.get()
, srcImagePos.width, srcImagePos.height
, SRCCOPY // Тупо копируем пиксели
);
}
else
{
auto autoStretchBltMode = AutoStretchBltMode(dstDcAuto.get(), HALFTONE);
//rasterFnRes =
StretchBlt( dstDcAuto.get(), targetImagePos.width, targetImagePos.height // hdc назначения и положение в нём
, targetImageSize.width, targetImageSize.height
, srcDcAuto.get()
, srcImagePos.width, srcImagePos.height
, srcImageSize.width, srcImageSize.height
, SRCCOPY // Тупо копируем пиксели
);
}
|
| |
При отрисовке этой ленты это выглядит так:
| Скрытый текст |
| |
| |
Если сохранить полученное изображение в BMP-файл, то Paint.NET оно выглядит так:
| Скрытый текст |
| |
| |
Что я делаю не так?
ЗЫ Теоретически, я могу ручками байты сформровать для результирующей картинки, проблема в том, что кадры в гифке могут иметь разный размер, и я в одном из вариантов делаю StretchBlt для масштабирования
ЗЫЫ Да, из гифки картинки я гружу в 32х-битный HBITMAL, и оно поэтому отображается, когда рисую покадрово, с прозрачностью.