2010-09-08 44 views
0

現在我正在窗口的標題欄上繪製一個小的16x16圖像。它很好地工作,除了一個令人厭惡的閃爍,我不知道如何擺脫。Winforms在任務欄上繪製圖像時閃爍

我只是畫這樣的形象:

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 

其重繪整個標題欄,每次的東西是它改變了(點擊,鼠標懸停角落按鈕等),其重繪時我得到了閃爍。

其他人都會遇到這個問題嗎?

回答

0

鑑於此前的評論,我認爲它並不值得追求。除非我完全手動繪製標題欄,否則閃爍效果不會消失,這是一種笨重的解決方法。相反,我重新考慮瞭如何處理整個程序。唯一可行的解​​決方案是完全刪除窗口邊框,並在窗體頂部繪製僞造邊框/條。看到http://www.codeproject.com/KB/miscctrl/gTitleBar.aspx

或更好的是,只是讓標題欄。