我正在尝试在wxPython上创建一个面板,在背景上使用用户指定的位图,可以拖动多个形状。
预期的行为是:
- 用户在初始化面板之前在打开的文件对话框中选择图像文件;
- 图像成为面板的背景,并缩放以适合面板,同时保持纵横比取决于之前的用户输入;
- 图像上方会出现一些圆圈,可由用户拖动。
我已经能够实现这一点而没有任何功能问题,但我在背景闪烁方面遇到了一些麻烦,到目前为止,我发现导致闪烁最小的解决方案是:
- 创建面板时,从加载的图像创建BufferedDC;
- 在EVT_PAINT处理程序内创建PaintDC;
- 将BufferedDC StretchBlit到PaintDC;
- 在PaintDC上绘制圆圈;
- 在任何更改圈子位置或可见度的事件上刷新面板。
由于圆圈是可拖动的,因此其中一个事件是鼠标移动,因此每次鼠标在面板上移动时面板都会刷新,从而导致闪烁。
如何以消除背景闪烁的方式实现此行为?