none
窗口不断重绘 RRS feed

  • 问题

  • 写了一个winform下的自定义组件。有一个panel,若干个picturebox,picturebox有图片。应用程序运行的时候是好的。但是,当应用程序最小化到任务栏,然后再次打开的时候,窗口闪烁的很厉害,感觉我的组件在不断的重绘,拖影很明显。我几乎把所有程序中的方法都打了断点了,但是好像 应用程序从最小化到最大化的时候 都不会进入这些断点。想了很久了,不知道到底是什么原因,希望能得到指点。(应用程序中还有一些其他的组件,他们没有这种现象)
    别紧张,我不是什么好人。。。
    2009年11月13日 8:45

答案

  • 你好!
         尝试开启双缓冲,在窗体构造函数中添加如下代码:
         this.SetStyle(ControlStyles.AllPaintingInWmPaint|ControlStyles.UserPaint|ControlStyles.OptimizedDoubleBuffer,true);
    周雪峰
    • 已标记为答案 YiChun Chen 2009年11月16日 10:53
    2009年11月13日 9:11
    版主
  • 你好!
         请问你是不是加载了过多的PictureBox啊!这样的话你继承PictureBox控件实现自己的控件,在里面开启双缓冲!
    周雪峰
    • 已标记为答案 YiChun Chen 2009年11月16日 10:53
    2009年11月14日 3:14
    版主
  • 在PictureBox绘制图片的时候会导致窗体重绘!
    周雪峰
    • 已标记为答案 YiChun Chen 2009年11月16日 10:53
    2009年11月14日 9:08
    版主

全部回复

  • 你好!
         尝试开启双缓冲,在窗体构造函数中添加如下代码:
         this.SetStyle(ControlStyles.AllPaintingInWmPaint|ControlStyles.UserPaint|ControlStyles.OptimizedDoubleBuffer,true);
    周雪峰
    • 已标记为答案 YiChun Chen 2009年11月16日 10:53
    2009年11月13日 9:11
    版主
  • 加上了,还是不行
    别紧张,我不是什么好人。。。
    2009年11月13日 11:51
  • 你好!
         请问你是不是加载了过多的PictureBox啊!这样的话你继承PictureBox控件实现自己的控件,在里面开启双缓冲!
    周雪峰
    • 已标记为答案 YiChun Chen 2009年11月16日 10:53
    2009年11月14日 3:14
    版主
  • 确实是有不少的picturebox.

    picturebox过多还会导致窗口不断重绘吗?
    别紧张,我不是什么好人。。。
    2009年11月14日 9:00
  • 在PictureBox绘制图片的时候会导致窗体重绘!
    周雪峰
    • 已标记为答案 YiChun Chen 2009年11月16日 10:53
    2009年11月14日 9:08
    版主