Frage

Im Moment bin Zeichnung habe ich ein kleines 16x16 Bild auf der Titelleiste von meinem Fenster. Es funktioniert gut, außer für eine widerliche Flimmern, dass ich herausfinden kann nicht, wie loswerden.

Ich bin einfach das Bild wie diese Zeichnung:

Protected Overrides Sub WndProc(ByRef m As Message)
    If m.Msg = WM_SIZE Then
        wnd_size = New Size(New Point(CInt(m.LParam)))
    End If
    If m.Msg = WM_ACTIVATE _
    OrElse m.Msg = WM_SIZE _
    OrElse m.Msg = WM_SYNCPAINT _
    OrElse m.Msg = WM_NCACTIVATE _
    OrElse m.Msg = WM_NCCREATE _
    OrElse m.Msg = WM_NCPAINT _
    OrElse m.Msg = WM_NCACTIVATE _
    OrElse m.Msg = WM_NCHITTEST _
    OrElse m.Msg = WM_PAINT _
    OrElse m.Msg = WM_MOUSEMOVE Then
        Dim g As Graphics = Graphics.FromHdc(CType(GetWindowDC(CInt(Handle)), IntPtr))
        g.DrawImage(My.Resources.drag, 0, 0, 16, 16)
    End If
    MyBase.WndProc(m)
End Sub

Es ist die gesamte Titelleiste neu zu streichen jedes Mal, wenn etwas auf sie geändert wird (Klick, Mouseover die Ecke Knöpfe, usw.) und sein während der Repaint ich das Flimmern bekommen.

Noch jemand jemals dieses Problem bekommen?

War es hilfreich?

Lösung

Im Lichte der vorherigen Kommentare zu diesem Thema habe ich entschieden, dass es nicht wirklich erstrebenswert. Der Flackereffekt würde nicht weggehen, wenn ich vollständig von Hand auf die Titelleiste ziehen, die eine klobig Abhilfe ist. Stattdessen habe ich mein Denken auf renoviert worden, wie das Programm in seiner Gesamtheit zu behandeln. Die einzige praktikable Lösung ist es, vollständig die Fenster Grenze zu entfernen und ein psuedo schreitend / bar auf der Oberseite der Form zu ziehen. Siehe http://www.codeproject.com/KB/miscctrl/gTitleBar.aspx

Oder noch besser, lassen Sie einfach die Titelleiste sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top