2008-09-27 3 views
0

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

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

    MyBase.OnPaint(e) 
End Sub 

, но это ничего не изменило. (Вызов MyBase.OnPaintпервый не делает никакой разницы ни.)

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

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

ответ

1

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

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

+0

Это решение * делает * в основном использование двухобразного трюка, хотя: «дырки» разрезаны в полупрозрачную форму; форма под ним может иметь контроль в этих местах. В любом случае, в то время как в то же время это элегантное решение, похоже, работает достаточно хорошо. Благодаря! – 2008-09-27 16:04:33

1

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

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

+0

не делает разницы. Стили применяются (в соответствии с `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)), и он тоже не появился. – 2008-09-27 11:00:15

Смежные вопросы