代码之家  ›  专栏  ›  技术社区  ›  Hinek

为.net compact framework构建自定义绘制控件

  •  0
  • Hinek  · 技术社区  · 14 年前

    PictureBox Paint 事件:

    private void pictureBoxPlayfield_Paint(object sender, PaintEventArgs e)
    {
        // use e.Graphics to draw the grid, numbers and cursor
    }
    

    这是可行的,但您可以在绘制网格时看到。所以我的问题是,创建这样一个自定义控件的正确/更好的方法是什么?有没有办法启用双缓冲?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Hans Passant    14 年前

    紧凑框架中没有内置的双缓冲支持。您可以自己添加,PictureBox已经支持Image属性。在构造器中创建位图并将其分配给图像。您不再需要绘制事件,PictureBox提供的事件已经将其绘制到屏幕上。

    每当图像需要更改时,使用Graphics.FromImage()创建一个图形对象,传递PB的图像并绘制您的内容。调用PB的Invalidate()方法,告诉它需要重新绘制图像。如果仍然看到闪烁,请重写PB的OnPaintBackground()方法,而不执行任何操作。

    唯一的其他考虑是处理大小调整,你需要一个更大或更小的位图。不太确定这对一场比赛是必要的。