Отображение элементов управления в альфа-смешанной форме - PullRequest
0 голосов
/ 27 сентября 2008

Я пробовал код Visual C # Kicks для альфа-смешанной формы . Это работает (как только я удаляю свойство TransparencyKey); то есть я могу использовать альфа-тестовое изображение PNG W3C и видеть другие окна внизу, но делаю все элементы управления в форме невидимыми. Предположительно, они просто не окрашены, так как OnPaint переопределяется. Я пытался позвонить суперклассу OnPaint:

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    UpdateFormDisplay()

    MyBase.OnPaint(e)
End Sub

, но это ничего не изменило. (Вызов MyBase.OnPaint first также не имеет значения.)

К сожалению, большинство статей об альфа-смешанных формах сосредоточены на чистых заставках без каких-либо элементов управления на них - но нам нужна панель, которая сначала показывает поля входа, а затем индикатор выполнения.

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

Ответы [ 2 ]

1 голос
/ 27 сентября 2008

Странно, в любом случае, эта статья охватывает альфа-преобразованную форму с элементами управления:

http://www.codeproject.com/KB/miscctrl/AlphaForm.aspx

1 голос
/ 27 сентября 2008

Попробуйте вставить это в форму ctor после InitializeComponents ();

base.SetStyle (ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);

...