Я попробовал Visual C# Kicks код для альфа-смешанной формы. Это работает (как только я удалю свойство TransparencyKey); то есть я могу использовать W3C Альфа-тестовое изображение 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 ();
base.SetStyle (ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);
Нет никакой разницы. Стили применены (согласно
GetStyle), но я все еще не вижу никаких элементов управления. Я также пробовал использоватьe.GraphicsвнутриOnPaint, чтобы нарисовать что-то вручную, например: e.Graphics.DrawString ("Some text", New Font ("Arial", 24, FontStyle.Regular), Brushes.Black, CSng (Me.Width / 2) ), CSng (Me.Height / 2)), и он тоже не появился.