Конференция "WinAPI" » прозрачность битмапа в меню [D7, WinXP]
 
  • maxsvt © (12.05.16 04:12) [0]
    Всем привет. Регистрирую ком для расширения меню explorer. Решил вот красоты добавить - иконку к пункту меню

    Глобальное обьявление

    MyBitmap: HBitMap



    В инициализации юнита

    MyBitmap := LoadImage(hInstance, 'mybitmap', IMAGE_BITMAP, 0, 0, LR_LOADTRANSPARENT)



    В QueryContextMenu

    InsertMenu(Menu, indexMenu, MF_BYPOSITION or MF_STRING, idCmdFirst, MyString);

    SetMenuItemBitmaps(Menu,indexMenu,MF_BYPOSITION,MyBitmap ,MyBitmap)



    Иконка рисуется, но не прозрачная, а с фоном, хотя флаг LR_LOADTRANSPARENT стоит

    Пробовал еще вариант с TBitmap

    MyBitmap := TBitmap.Create;
    MyBitmap .LoadFromResourceName(HInstance,'mybitmap');
    MyBitmap .Transparent := True;
    MyBitmap .TransparentColor := BitMap.Canvas.Pixels[0,0];
    MyBitmap .TransparentMode := tmAuto;

    Далее точно также

    SetMenuItemBitmaps(Menu,indexMenu,MF_BYPOSITION,MyBitmap.Handle,MyBitmap.Handle)

    И опять не прозрачный. Что я делаю не так? Система Win8 64, дельфи XE8
  • maxsvt © (12.05.16 04:14) [1]
    Да, битмап 24 бит, первый пиксель "правильный" - прозрачный фон
  • maxsvt © (12.05.16 12:57) [2]
    Короче нашел сишный код, перевел на дельфи. Там просто тупо массив пикселей заменяется в самом битмэп. А потом уже на меню рисуется через SetMenuItemBitmaps

    т.е

    MyBitmap := LoadImage(hInstance, 'mybitmap', IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR)
    MyBitmap := ConvertBitmap(MyBitmap);

    ...

    SetMenuItemBitmaps(Menu,indexMenu,MF_BYPOSITION,MyBitmap ,MyBitmap)

    ps: как достало велосипеды изобретать
  • Eraser © (12.05.16 22:22) [3]

    > maxsvt ©   (12.05.16 04:14) [1]
    > Да, битмап 24 бит, первый пиксель "правильный" - прозрачный
    > фон

    а в остальных двух что?
  • maxsvt © (19.05.16 15:16) [4]
    В остальных картинка)
  • Eraser © (19.05.16 16:50) [5]

    > Eraser ©   (12.05.16 22:22) [3]

    новый формат битмапа изобрели? )
 
Конференция "WinAPI" » прозрачность битмапа в меню [D7, WinXP]
Есть новые Нет новых   [118427   +58][b:0][p:0.001]