Исправление мерцания в расширенном стиле окна не совместимо с графикой Graphi c? - PullRequest
1 голос
/ 31 января 2020

Я искал способ уменьшить раздражающее мерцание на моих элементах управления при открытии формы на некоторое время, и единственное найденное мной решение, которое работает, это использование этого расширенного стиля окна WS_EX_COMPSITED из приведенной ниже документации: https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles

Protected Overrides ReadOnly Property CreateParams() As CreateParams   
    Get   
        Dim cp As CreateParams = MyBase.CreateParams   
        cp.ExStyle = cp.ExStyle Or &H2000000   
        Return cp   
    End Get   
End Property  

Добавление этого в класс останавливает мерцание элементов управления (хотя и с небольшим снижением производительности, но в моем случае это незначительно) - скорее всего, из-за двойного Буферизованная форма.

Моя проблема в том, что когда это свойство применяется к классу, Graphics и Drawing, похоже, перестают работать в любом качестве в классе. Я пробовал приведенный ниже код с добавленным и удаленным свойством, и он работает только при удалении:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim myPen As Pen
    Dim myBrush As Brush

    myPen = New Pen(Drawing.Color.FromArgb(53, 64, 82), 1)
    myBrush = New SolidBrush(Color.FromArgb(180, 204, 112))
    Dim myGraphics As Graphics = Me.Panel1.CreateGraphics
    myGraphics.DrawEllipse(myPen, 28, 28, 12, 12)
    myGraphics.FillEllipse(myBrush, 28, 28, 12, 12)
End Sub

Я предполагаю, что это как-то связано с тем, как стиль WS_EX_COMPOSITED работает с точки зрения не обновляется / перерисовывается правильно и т. д. c, но Me.Refresh() или Me.Panel1.Refresh(), похоже, не перерисовывают его в любом случае.

Есть ли обходной путь для этого, который я могу использовать? Это ошибка или ограничение данного конкретного стиля расширенного окна?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...