Domanda

In questo momento sto disegnando un'immagine di un piccolo 16x16 sulla barra del titolo della mia finestra. E funziona bene, tranne che per un guizzo odioso che io riesco a capire come sbarazzarsi di.

Sono semplicemente disegnare l'immagine in questo modo:

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

La sua ridipingere l'intera barra del titolo ogni volta che qualcosa è cambiato su di esso (click, mouseover i pulsanti d'angolo, ecc), e la sua durante il ridisegno ottengo il tremolio.

Chiunque altro mai arrivare a questo problema?

È stato utile?

Soluzione

Alla luce delle precedenti commenti su questo, ho deciso che non è davvero la pena di perseguire. L'effetto di sfarfallio non andrà via a meno che io traggo completamente la barra del titolo manualmente, che è una soluzione goffa. Invece ho rifatto il mio pensiero su come gestire il programma nella sua interezza. L'unica soluzione praticabile è quella di rimuovere completamente il confine finestre e disegnare un / bar pseudo bordo sulla parte superiore del modulo. Vedere http://www.codeproject.com/KB/miscctrl/gTitleBar.aspx

O meglio ancora, lasciare che la barra del titolo sia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top