Как нарисовать прозрачную не клиентскую область в winForms? .Net 4
Я занимаюсь разработкой пользовательской формы, и я хочу, чтобы не-клиентская область была прозрачной. Я обрабатываю не клиентскую область рисования через номер сообщения "0x85", и это то, что я пробовал до сих пор:
- Нарисуйте цвет "Color.Transparent" -> область, не относящаяся к клиенту, была закрашена черным. Если бы я использовал изображение красного, черного или зеленого цвета, оно отлично работает, но прозрачно = черный
- Создал прозрачное изображение размером с форму и использовал метод "myGraphics.DrawImage("img.png")". фон остался черным. Если бы я использовал изображение красного, черного или зеленого цвета, оно также прекрасно работает...
- Ничего не рисовать (надеясь, что я просто останусь прозрачным)... не сработало
1 ответ
Решение
Для получения прозрачных частей окна требуется аппаратная поддержка, функция видеоадаптера, называемая многоуровневой. Используйте свойство TransparencyKey формы. Установите его на необычный цвет, например Color.Fuchsia. И нарисуйте этим цветом, чтобы видеоадаптер пропустил пиксели.