Скомпоновать HBITMAP из других HBITMAP
От: пффф  
Дата: 27.02.24 19:29
Оценка:
Здраствуйте!

Гружу кадры из 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, и оно поэтому отображается, когда рисую покадрово, с прозрачностью.
Отредактировано 28.02.2024 0:02 пффф . Предыдущая версия . Еще …
Отредактировано 27.02.2024 19:31 пффф . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.