Winforms Flickering أثناء رسم الصورة على شريط المهام
-
01-10-2019 - |
سؤال
الآن أرسم صورة صغيرة 16 × 16 على شريط عنوان نافذتي. إنه يعمل بشكل جيد ، باستثناء وميض بغيض لا يمكنني معرفة كيفية التخلص منه.
أنا ببساطة رسم الصورة مثل هذا:
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
أو الأفضل من ذلك ، فقط دع شريط العنوان يكون.