wxPython: устранение мерцания фона DC при перемещении фигур на растровом изображении
Я пытаюсь создать панель на wxPython с заданным пользователем растровым изображением на фоне, куда можно перетащить несколько фигур.
Ожидаемое поведение:
- Пользователь выбирает файл изображения в диалоговом окне открытия файла до инициализации панели;
- Изображение становится фоном панели и масштабируется, чтобы соответствовать панели, сохраняя соотношение сторон, которое зависит от предыдущего пользовательского ввода;
- Несколько кружков появляются над изображением и могут быть перетащены пользователем.
Я смог реализовать это без каких-либо функциональных проблем, но у меня были некоторые проблемы с мерцанием фона, и до сих пор я нашел решение, которое приводит к наименьшему количеству мерцания:
- Создайте BufferedDC из загруженного изображения при создании панели;
- Создайте PaintDC внутри обработчика EVT_PAINT;
- StretchBlit BufferedDC в PaintDC;
- Нарисуйте круги на PaintDC;
- Обновите панель для любого события, которое меняет положение или видимость окружностей.
Поскольку круги перетаскиваются, одним из этих событий является движение мыши, поэтому панель обновляется каждый раз, когда мышь перемещается по панели, вызывая мерцание.
Как я могу реализовать это поведение таким образом, чтобы устранить фоновое мерцание?