кнопка рисования владельца win32 c ++ с прозрачным изображением - PullRequest
0 голосов
/ 30 октября 2011

Я реализовал кнопку рисования владельца в моем приложении win32 (без MFC).Кнопка представляет собой обычное растровое изображение размером 20x20 (круглый значок с прозрачностью).Проблема в том, что кнопка расположена на сплошном фоне, и я вижу кнопки на сером фоне (так как растровое изображение круглое).Я попытался ответить на WM_CTLCOLORBTN с помощью NULL_BRUSH, но безуспешно ... Я пытался отобразить кнопку с помощью растрового изображения и файла ico, но не сдвинулся с места. Кто-нибудь знает, как решить эту проблему?

Это моя проблема, значок настроек должен быть прозрачным по краям (не белый / серый)

enter image description here

Ответы [ 3 ]

2 голосов
/ 31 октября 2011

Похоже, вы пытаетесь создать непрямоугольный элемент управления.

Вы можете позвонить SetWindowRgn, чтобы сообщить Windows, что ваш элемент управления не прямоугольный.

1 голос
/ 31 октября 2011

Вы говорите, что это сплошной фон, но ваше изображение показывает некоторый оранжево-желтый градиент в качестве фона.Если это действительно стандартный цвет кнопки Windows, то вы можете загрузить растровое изображение с помощью LoadImage, используя LR_LOADMAP3DCOLORS или LR_LOADTRANSPARENT.Поскольку у вас есть градиент, вам придется использовать более сложную технику, чтобы замаскировать растровое изображение.http://www.winprog.org/tutorial/transparency.html

1 голос
/ 31 октября 2011

В дополнение к тому, что ответ @ joel, если вы хотите сделать некоторую область прозрачной, поместите уникальный цвет в область, где вы хотите иметь прозрачность, используя некоторые графические редакторы (RGB (0xFF, 0x00,0xFF)) в основном используется. Тогдаиспользовать TransperantBlt

...