Добавление прозрачного растрового изображения в кнопку Windows - PullRequest
1 голос
/ 04 мая 2010

Прошло много времени с тех пор, как я это сделал, но я пытаюсь добавить пользовательскую графику кнопки к кнопке окна с некоторыми прозрачными областями. Я пробовал разные схемы, но не могу показать прозрачные области. Вот мой код:

hbmpUpDisabled = LoadImage(instance,MAKEINTRESOURCE(IDB_UPARROWDISABLED), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );

SendMessage(GetDlgItem(hWndDlg, IDC_MOVEUP),BM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)hbmpUpDisabled);

Кто-нибудь замечает здесь какие-либо проблемы? Это работает, если мое растровое изображение является 1-разрядным растровым изображением. Я не мог заставить работать 32-битное растровое изображение, и я не уверен, как настроить 24-битное или 8-битное растровое изображение, чтобы сделать это .... Я попробовал пользовательский цвет 255,0255 (который IIRC является прозрачным по умолчанию ценность), но пока радости нет ....

1 Ответ

2 голосов
/ 04 мая 2010

LR_LOADMAP3DCOLORS должен отображаться серым цветом - в исходном изображении - в соответствии с текущим цветом лица кнопки. Кнопки не используют AlphaBlt или TransparentBlt, поэтому на самом деле нет способа (за исключением пользовательского рисования) установить растровое изображение с прозрачными или альфа-областями на кнопку и ожидать, что оно будет работать. Вам просто нужно предварительно подготовить растровое изображение с правильным цветом кнопки в фоновых областях.

  • Тем не менее - я подозреваю, что некоторые из этих ограничений могут быть сняты для кнопок, реализованных общими элементами управления v6. Добавьте commctl 6 в качестве зависимой сборки к вашему exe-файлу и посмотрите, изменится ли поведение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...