タスクバーに画像を描画しながら、ウィンフォームがちらつきます
-
01-10-2019 - |
質問
今、私は窓のタイトルバーに小さな16x16の画像を描画しています。それはうまく機能しますが、私はどのように取り除くかを理解できない不快なちらつきを除いて。
私は単にこのようなイメージを描くだけです:
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
その上に何かが変更されるたびにタイトルバー全体を塗り直します(クリック、コーナーボタンのマウスオーバーなど)、そして塗り直しの間にちらつきがあります。
他の誰かがこの問題を抱えていますか?
解決
これに関する以前のコメントに照らして、私はそれが本当に追求する価値がないと決めました。私が手動でタイトルバーを完全に描いていない限り、フリッカー効果は消えません。これは不格好な回避策です。代わりに、プログラム全体をどのように処理するかについての考えをやり直します。唯一の実行可能な解決策は、窓の境界を完全に取り外し、フォームの上にPsuedoの境界線/バーを描くことです。見る http://www.codeproject.com/kb/miscctrl/gtitlebar.aspx
または、さらに良いことに、タイトルバーを作ってください。
所属していません StackOverflow