Отображение элементов управления в альфа-смешанной форме
-
02-07-2019 - |
Вопрос
Я попробовал Visual C # Kicks код для альфа-смешанной формы.Это работает (как только я удаляю TransparencyKey
собственность);то есть, я могу использовать W3C's Альфа-тестовое изображение в формате PNG и увидеть другие окна внизу, но делает все элементы управления в форме невидимыми.Предположительно, они просто не окрашены, как OnPaint
переопределяется.Я попытался вызвать суперкласс OnPaint
:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
UpdateFormDisplay()
MyBase.OnPaint(e)
End Sub
, но это ничего не изменило.(Зовет MyBase.OnPaint
Первый это тоже не имеет никакого значения.)
К сожалению, большинство статей об альфа-смешанных формах посвящены чистым заставкам без каких-либо элементов управления на них, но нам нужна панель, которая сначала показывает поля входа, а затем индикатор выполнения.
Элементы управления, кстати, не нуждаются в прозрачности;прозрачность PNG действительно важна только по внешним краям.Так что подделать это, добавив поверх всего этого еще одну форму (при этом две всегда движутся в тандеме), может быть достаточно, но я бы предпочел более плавное решение.
Решение
В любом случае, странно, что в этой статье рассматривается альфа-преобразованная форма с элементами управления:
Другие советы
Попробуйте поместить это в вашу форму ctor после InitializeComponents();
База.setStyle(стили управления.Оптимизирован двойной буфер | стили управления.Все элементы рисования в WMPAINT | стили управления.Пользовательская краска, true);