Изменение непрозрачности формы без изменения непрозрачности содержащихся элементов управления

Возможно ли с помощью Windows Forms в .NET изменить непрозрачность формы без он автоматически меняет непрозрачность элементов управления в форме?

У меня есть форма, которая работает в развернутом виде, которая содержит панель flowlayoutpanel в центре формы с элементами управления внутри нее. Я хотел бы уменьшить непрозрачность формы, чтобы «запасная» часть вокруг панели flowlayout была частично прозрачной, но сама панель flowlayoutpanel оставалась сплошной (я стремлюсь к lightbox с эффектом стиля).


person KevB    schedule 07.10.2008    source источник
comment
Это невозможно с непрозрачностью. Вы можете использовать свойство TransparencyKey, если вам достаточно 0%.   -  person Hans Passant    schedule 14.07.2011
comment
Большое спасибо, сэр, у меня получилось :)   -  person dmrc1143    schedule 14.07.2011


Ответы (3)


Конечно, это возможно в WPF, установив прозрачность фона формы (в отличие от установки непрозрачности на 0, которая в основном устанавливает прозрачность как на переднем плане, так и на фоне).

Если вы действительно этого хотите, я не понимаю, почему вы не можете встроить компонент winforms в прозрачную форму wpf с помощью WindowsFormsHost.

person Dave Arkell    schedule 09.10.2008

Form.TransparencyKey Недвижимость

Когда свойству TransparencyKey назначен Color, области формы с одинаковым BackColor будут отображаться прозрачно.

Если цвет, назначенный свойству TransparencyKey, такой же, как у любых элементов управления в форме, они также будут отображаться прозрачно. Например, если у вас есть элемент управления Button в форме, для которого свойству TransparencyKey задано значение SystemColors.Control, элемент управления будет отображаться прозрачно, если свойство BackColor элемента управления Button не будет изменено на другой цвет.

person CharithJ    schedule 14.07.2011

К сожалению, Opacity является свойством Form, а не Control. Единственный способ, которым я могу себе представить, это было бы возможно, - это если бы вы сами нарисовали форму и использовали альфа-компонент в кисти, используемой для рисования фона формы.

Даже в этом случае я не думаю, что это сработает, поскольку диспетчер композиции рабочего стола (особенно актуальный в Windows Vista) должен знать, как ваша форма должна быть скомпонована с остальной частью рабочего стола, и я думаю, что кисть будет только прозрачной. на фоне формы, а не на том, что находится под ним.

person Jeff Yates    schedule 07.10.2008