wx.ClientDC在窗口最小化之后所画内容消失的问题探讨

来源:互联网 发布:广东省软件企业评估 编辑:程序博客网 时间:2024/06/03 09:04

wx.DC有很多类别,如wx.PaintDC,wx.ClientDC,wx.BufferedDC,wx.BufferedPaintDC等。

本文以五子棋界面设计为例,探讨下wx.ClientDC所画内容在窗口最小化之后消失的问题。

博主是初学wxpython,在进行五子棋界面设计之前也没有接触过UI设计这方面的内容,所以在编程之前我问了之前用java编过五子棋的同学一个问题:界面是落一个子刷新一次,还是直接叠加?那个同学给我的答案是落子一次刷新一次界面难道不麻烦吗,于是我就成功的陷入了落子之后不刷新界面的误区。

在界面设计是,我使用wx.PaintDC绘制了棋盘背景,使用wx.ClientDC绘制了棋子,下方是代码(截了好几次图,有重叠的部分),程序是能正常工作的,但是会出现最小化窗口后,wx.ClientDC绘制的棋子消失,但落子的位置已被程序记录的问题。

1111

2222

3333


之后我搜索了相关问题,基本上大家的解答是如果想要绘制的东西保存下来,就要使用wx.PaintDC,并且为了保证无界面刷新闪烁的问题,要使用wx.BufferedPaintDC,

于是我删掉了wx.ClientDC,设置每落一子便用wx.PaintDC重新绘制,注意wx.PaintDC必须和EVT_PAINT绑定,使用self.Refresh()刷新界面即为重绘界面,具体代码如下:4444

5555

6666

阅读全文
0 0