Общие элементы управления в прозрачном окне? - PullRequest
0 голосов
/ 06 июня 2019

Хотя существует множество вариантов вопроса, кажется, нет конкретного ответа на простой случай желания использовать встроенные общие элементы управления в прозрачном окне с использованием Win32.Я не хочу, чтобы элементы управления были прозрачными, я просто хочу, чтобы границы вокруг них были прозрачными.Я не могу поверить, что MS не обновляла .dll для обработки прозрачности, когда они добавляли ее, но я думаю, они забыли?Есть ли конкретный метод, который работает.Кнопка может быть закрыта с помощью WS_EX_TRANSPARENT, но нестабильно там, где она работает большую часть времени, но иногда появляется часть границы.Изменить элементы управления, изменить в зависимости от того, когда получить фокус или нет.

Итак, вопрос прост:

Есть ли способ сделать общие элементы управления прозрачным окном, чтобы вокруг них не было белой рамки?

Если нет, есть ли хорошая библиотека для замены, которая делает это через владельца draw?

Если есть, то какой и какой метод?

Кажется глупым изобретать велосипед только из-за области вокруг элемента управления.

TIA !!

1 Ответ

0 голосов
/ 13 июня 2019

Если я не ошибаюсь, вы можете предпринять следующие шаги для достижения этого эффекта.

1.Создать растровый объект GDI+ с пиксельным форматом PixelFormat32bppPARGB.

2.Создать Graphics объект для рисования в этом Bitmap объекте.

3.Введите весь свой рисунок в этот объект, используя GDI+.

4.Уничтожить объект Graphics, созданный на шаге 2.

5. Вызовите метод GetHBITMAP объекта Bitmap, чтобы получить Windows HBITMAP.

6.Уничтожить объект Bitmap.

7.Создайте DC памяти с помощью CreateCompatibleDC и выберите HBITMAP с шага 5 в него.

8.Call UpdateLayeredWindow с использованием памяти DC в качестве источника.

9.Выберите предыдущее растровое изображение и удалите память DC.

10.Уничтожить HBITMAP, созданный на шаге 5.

Этот метод должен позволять вам контролировать альфа-канал всего, что рисуется: прозрачный для фона, непрозрачный для кнопки.

Аналогичное обсуждение: Прозрачное окно, содержащее непрозрачный текст и кнопки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...