wxPython:在位图上移动形状时消除DC背景闪烁

时间:2015-11-25 17:24:56

标签: python wxpython wxwidgets device-context

我正在尝试在wxPython上创建一个面板,在背景上使用用户指定的位图,可以拖动多个形状。

预期的行为是:

  • 用户在初始化面板之前在打开的文件对话框中选择图像文件;
  • 图像成为面板的背景,并缩放以适合面板,同时保持纵横比取决于之前的用户输入;
  • 图像上方会出现一些圆圈,可由用户拖动。

我已经能够实现这一点而没有任何功能问题,但我在背景闪烁方面遇到了一些麻烦,到目前为止,我发现导致闪烁最小的解决方案是:

  • 创建面板时,从加载的图像创建BufferedDC;
  • 在EVT_PAINT处理程序内创建PaintDC;
  • 将BufferedDC StretchBlit到PaintDC;
  • 在PaintDC上绘制圆圈;
  • 在任何更改圈子位置或可见度的事件上刷新面板。

由于圆圈是可拖动的,因此其中一个事件是鼠标移动,因此每次鼠标在面板上移动时面板都会刷新,从而导致闪烁。

如何以消除背景闪烁的方式实现此行为?

0 个答案:

没有答案