How to crossfade two panels
От: RISc  
Дата: 21.07.06 08:50
Оценка:
Нормального аналога слову crossfade в великом и могучем не нашлось, поэтому написал как есть.
Вобщем нужно изобразить нечто вроде мастера активации ХРени, где при нажатии кнопки далее происходит плавный alphablend одной панели в другую со всеми контролами на ней.
Это возможно в WinForms ? Если да, то каким образом ?

из того что пытался (результаты не удовлетворительные):
1. доп. форма в виде "ширмы" с opacity от 0 до 100%, ну и в обратную сторону
получился не crossfade, а fade in — fade out
2. alphablend API так и не заработал за отсутствием нормального DC, а может руки кривые
AlphaBlend(panel1.CreateGraphics.GetHdc(), 0, 0, panel1.Width, panel1.Height, panel2.CreateGraphics.GetHdc(), 0, 0, panel2.Width, panel2.Height, BLENDFUNCTION)
3. субклассинг panel с закраской фона в OnPaint()
Graphics.FillRectangle(New SolidBrush(Color.FromArgb(_%OPACITY_, Parent.BackColor)), 0, 0, Width, Height)
слишком медленно, flicker
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.