Как использовать AnimateWindow и DoubleBuffering вместе в vb.net?

Я рисую текст с помощью AntiAlias ​​на панели в событии панели OnPaint. Форма отображается плавно в событии Load с функцией AnimateWindow, но в конце события Load панель стирается, и программа переходит к событию OnPain Panel и перерисовке текста. Это стирание и перерисовка вызывают мерзкое мерцание. Если я пытаюсь использовать DoubleBuffering (или SetStyles), ничего не происходит или мерцание не разрешается, но форма появляется без наложения.

Как я могу решить это? Спасибо за помощь!

Вот упрощенный код:

Private Sub UzenetForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  'If I use this rows blending is over:
  'SetStyle(ControlStyles.UserPaint, True)
  'SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  'SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  'UpdateStyles()
  AnimateWindow(Handle, 500, AW_BLEND Or AW_ACTIVATE)
End Sub

Private Sub TitlePanel_Paint(sender As Object, e As PaintEventArgs) Handles TitlePanel.Paint
  e.Graphics.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit
  TextRenderer.DrawText(e.Graphics, lWinTitle.Text, lWinTitle.Font, 
    lWinTitle.Bounds, abWinTitleColor, TextFormatFlags.Left Or 
    TextFormatFlags.NoPadding Or TextFormatFlags.NoPrefix Or 
    TextFormatFlags.SingleLine Or TextFormatFlags.VerticalCenter Or 
    TextFormatFlags.EndEllipsis)
End Sub

0 ответов

Другие вопросы по тегам