Как нарисовать прозрачную не клиентскую область в winForms? .Net 4

Я занимаюсь разработкой пользовательской формы, и я хочу, чтобы не-клиентская область была прозрачной. Я обрабатываю не клиентскую область рисования через номер сообщения "0x85", и это то, что я пробовал до сих пор:

  • Нарисуйте цвет "Color.Transparent" -> область, не относящаяся к клиенту, была закрашена черным. Если бы я использовал изображение красного, черного или зеленого цвета, оно отлично работает, но прозрачно = черный
  • Создал прозрачное изображение размером с форму и использовал метод "myGraphics.DrawImage("img.png")". фон остался черным. Если бы я использовал изображение красного, черного или зеленого цвета, оно также прекрасно работает...
  • Ничего не рисовать (надеясь, что я просто останусь прозрачным)... не сработало

1 ответ

Решение

Для получения прозрачных частей окна требуется аппаратная поддержка, функция видеоадаптера, называемая многоуровневой. Используйте свойство TransparencyKey формы. Установите его на необычный цвет, например Color.Fuchsia. И нарисуйте этим цветом, чтобы видеоадаптер пропустил пиксели.

Другие вопросы по тегам