Guest User

Untitled

a guest
Jun 18th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. // Note that WM_SetRedraw = 0XB
  2.  
  3. // Suspend drawing.
  4. UnsafeSharedNativeMethods.SendMessage(handle, WindowMessages.WM_SETREDRAW, IntPtr.Zero, IntPtr.Zero);
  5.  
  6. ...
  7.  
  8. // Resume drawing.
  9. UnsafeSharedNativeMethods.SendMessage(handle, WindowMessages.WM_SETREDRAW, new IntPtr(1), IntPtr.Zero);
  10.  
  11. SetStyle(ControlStyles.OptimizedDoubleBuffer |
  12. ControlStyles.AllPaintingInWmPaint, true);
  13.  
  14. BufferedGraphicsContext gfxManager;
  15. BufferedGraphics gfxBuffer;
  16. Graphics gfx;
  17.  
  18. private void InstallGFX(bool forceInstall)
  19. {
  20. if (forceInstall || gfxManager == null)
  21. {
  22. gfxManager = BufferedGraphicsManager.Current;
  23. gfxBuffer = gfxManager.Allocate(this.CreateGraphics(), new Rectangle(0, 0, Width, Height));
  24. gfx = gfxBuffer.Graphics;
  25. }
  26. }
  27.  
  28. protected override void OnPaint(PaintEventArgs e)
  29. {
  30. InstallGFX(false);
  31. // .. use gfx to draw
  32. gfxBuffer.Render(e.Graphics);
  33. }
  34.  
  35. protected override void OnSizeChanged(EventArgs e)
  36. {
  37. base.OnSizeChanged(e);
  38. InstallGFX(true); // to reallocate drawing space of new size
  39. }
  40.  
  41. using System;
  42. using System.Collections.Generic;
  43. using System.Text;
  44. using System.Windows.Forms;
  45.  
  46. namespace myNameSpace.Forms.UserControls
  47. {
  48. public class TableLayoutPanelNoFlicker : TableLayoutPanel
  49. {
  50. public TableLayoutPanelNoFlicker()
  51. {
  52. this.DoubleBuffered = true;
  53. }
  54. }
  55. }
Add Comment
Please, Sign In to add comment