Прозрачные битмапы с альфа-каналом
От: akulikov  
Дата: 17.10.06 21:35
Оценка:
Привет.

Никак не получается нарисовать 32-битный битамп с альфа-каналом.
Нарисовать мне его нужно не на тулбаре, а просто в диалоговом окне поверх фонового рисунка.

Вот кусок кода:

      CImageList    m_ilBitmaps;
//      ................................
      CBitmap* pBmp;
    pBmp = new CBitmap;
    HINSTANCE hInst = AfxFindResourceHandle(MAKEINTRESOURCE(IDB_STARTINDICATOR), RT_BITMAP);
    HBITMAP hBmp = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(IDB_STARTINDICATOR),
        IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_CREATEDIBSECTION);
    pBmp->Attach(hBmp);
    
//    pBmp->LoadBitmap(IDB_STARTINDICATOR);           Такой вариант работает аналогично.
    m_mapBitmaps[IDB_STARTINDICATOR] = pBmp;

//      ..............

    m_ilBitmaps.Create(15, 15, ILC_COLOR32, 2, 2);

     m_ilBitmaps.Add(pBmp, (CBitmap*)NULL);
//      ..............


//   Здесь пробую рисовать
    CPoint pt;

      pt.x = rClient.right-15;
    pt.y = rClient.top ;
    m_ilBitmaps.DrawIndirect (pDC, 0, pt, CSize(0,0), CPoint(0,0), ILD_PRESERVEALPHA, SRCCOPY, CLR_NONE,
                                CLR_NONE, ILS_NORMAL, 0, CLR_DEFAULT);


В результате вместо прозрачности получается каринка с черным фоном.
Манифест присутствует. В то же время в тулбаре та же картинка рисуется как надо.
Подскажите, в чем моя ошибка. Может есть какой-то другой способ нарисовать без использования CImageList ?
Программа должна работать на Windows XP SP2, совместимость с предыдущими версиями не обязательна.
Буду благодарен за любую идею.

Всего хорошего
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.