Я попробовал self.refresh (), как предложено Майком Дрисколлом. Это сработало частично. Я перемещаю свои собственные объекты с помощью событий мыши, а затем перекрашиваю изображение - рендеринг моих объектов. Таким образом, события мыши обновляли координаты, а перерисовка обновляла отображение. Проблема в том, что refresh (), кажется, вызывается лениво или имеет более низкий приоритет, чем события мыши. Таким образом, функция Refresh () приводит к прерывистому отображению.
Поскольку я использую буферизованное отображение через wxDemo для прокручиваемой области, я взял следующую строку из события Paint:
dc = wx.BufferedPaintDC(self, self.buffer, wx.BUFFER_VIRTUAL_AREA)
И вызвал мою функцию рисования с этим DC из обработчика событий мыши. По окончании dc освобождается и (согласно комментариям в демоверсии) копируется на экран. Раньше мне не было ясно, как событие Paint обрабатывает контроллеры домена, поэтому я пытался вызвать событие. Оказывается, вы можете использовать этот DC и просто визуализировать события мыши. Это приводит к плавному перетаскиванию моих пользовательских нарисованных объектов.