Перенос цвета в BITMAP c помощью BitBlt и StretchBlt, SetDIBits

Тема в разделе "WASM.WIN32", создана пользователем dimax, 22 май 2009.

  1. dimax

    dimax New Member

    Публикаций:
    0
    Регистрация:
    21 май 2009
    Сообщения:
    11
    Нужно перенести BITMAP hOutBitmap, на HDC hDC окна проги с помощью BitBlt или StretchBlt.
    Получается черно-белая картинка вместо цветной.

    Изначально hOutBitmap создавался как CreateCompatibleBitmap от hOutDC, а последний с помощью CreateCompatibleDC от hDC. Выполнено даже SelectObject(hOutDC, hOutBitmap).
    В hOutBitmap данные растра заполняются из бинарного файла, 24 бита на пиксел, с помощью SetDIBits.
    StretchBlt вызывается в оконной функции по сообщению WM_PAINT, в результате на экране черно-белая копия того, что нарисовано в растре.

    В чем тут может быть дело?
     
  2. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Создавай hOutBitmap не CreateCompatibleBitmap, а CreateBitmap. должно спасти
     
  3. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Вот сразу видно -- чувак ооочень интересуется проблемой :))
     
  4. dimax

    dimax New Member

    Публикаций:
    0
    Регистрация:
    21 май 2009
    Сообщения:
    11
    Разобрался. Надо было создавать
    hOutDC=CreateCompatibleDC(hDC);
    hOutBitmap=CreateCompatibleBitmap(hDC, W, H);
    а не
    hOutBitmap=CreateCompatibleBitmap(hOutDC, W, H);

    hDC=GetWindowDC(...)