Во-первых, я не разработчик на C++, я программирую в основном на C#. Я пытаюсь использовать класс ContextMenu (да, я знаю, ContextMenuStrip) в .NET, который является оболочкой в CMenu в моем приложении.Простой способ показать растровое изображение рядом с пунктом меню в CMenu с правильной прозрачностью
Как отобразить изображение рядом с пунктом меню, имеющим соответствующую прозрачность?
Что я сделал до сих пор называют SetMenuItemBitmaps на моем пункте меню, здесь прилагается результат:
Как вы можете видеть, что есть белый фон на пункт меню. Это просто так расстраивает, что я хочу. Как я могу избежать проблем с прозрачностью? Я приложил точный образ я использовал ниже по данному пункту меню:
Я знаю, что SetMenuItemBitmaps не предназначен для цветных изображений.
Выбранные и четкие растровые изображения должны быть монохромными. Система использует оператор Boolean AND, чтобы комбинировать растровые изображения с меню, чтобы белая часть стала прозрачной, а черная часть стала цветом меню . Если вы используете цветные растровые изображения, результаты могут быть нежелательными.
Итак, каков правильный (надеюсь, простой) способ сделать это?
EDIT
Другая вещь, которую я пытался звала SetMenuItemInfo, но я получаю ошибку 87 (неверный параметр).
Это то, что структура MENUITEMINFO выглядит как раньше я называю SetMenuItemInfo:
И значения параметров Призываю SetMenuItemInfo являются:
HMenu - Ручка к Контекстное меню?
uItem - 0 (первый индекс элемент?)
fByPosition - истинный
lpmii - (содержание структуры выше)
Нет ничего явно неправильного в структуре, которую я вижу, поэтому, возможно, проверьте, что 'hMenu' действительно?Может быть, тест, вызвав 'GetMenuItemInfo()', чтобы получить что-то простое (например, 'fState'). –
@JonathanPotter Ну, мне удалось заставить SetMenuItemInfo работать, спасибо за направление. Единственная проблема заключается в том, что он выглядит точно так же, как и выше (пиксель с белым фоном). – test
Является ли ваш растровый 32bpp с заранее умноженной альфой? –