Простой способ показать растровое изображение рядом с пунктом меню в CMenu с правильной прозрачностью.C#

Место общения программистов C#
Ответить
Anonymous
 Простой способ показать растровое изображение рядом с пунктом меню в CMenu с правильной прозрачностью.

Сообщение Anonymous »

Во-первых, я не разработчик C++, я программирую в основном на C#. Я пытаюсь использовать класс ContextMenu (да, я знаю о ContextMenuStrip) в .NET, который является оболочкой CMenu в моем приложении.

Как отобразить изображение рядом с элементом меню, имеющее необходимую прозрачность?

До сих пор я вызывал SetMenuItemBitmaps для моего пункта меню, вот прикрепленный результат:

Изображение


Как видите, пункт меню имеет белый фон. Это настолько разочаровывающе близко к тому, что я хочу. Как я могу избавиться от проблем с прозрачностью? Я прикрепил точное изображение, которое использовал ниже в этом пункте меню:

Изображение


Я знаю, что SetMenuItemBitmaps не предназначен для цветных изображений.


Выбранные и чистые растровые изображения должны быть монохромными. Система использует
логический оператор И для объединения растровых изображений с меню так, что
белая часть становится прозрачной, а черная часть становится
цветом пункта меню. Если вы используете цветные растровые изображения, результаты могут быть
нежелательными.


Итак, каков правильный (надеюсь, простой) способ сделать это?

РЕДАКТИРОВАТЬ

Я еще попробовал позвонить SetMenuItemInfo, но я продолжаю получать ошибку 87 (неверный параметр).

Вот как выглядит структура MENUITEMINFO перед вызовом SetMenuItemInfo:

Изображение


И значения параметров, которые я вызываю в SetMenuItemInfo:

hMenu — дескриптор ContextMenu?

uItem — 0 (индекс первого элемента?)

fByPosition — true

lpmii — (содержимое структуры выше)

Подробнее здесь: https://stackoverflow.com/questions/193 ... t-transpar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»