в моем приложении у меня есть панель со связанным wxWindowDC и wxMemoryDC., я должен потянуть различную вещь на той панели как фоновый цвет сверх фонового цвета bg изображение и на вершине bg изображение, я должен нарисовать некоторый текст и т.д.
Я храню всю эту вещь в память dc, и наконец в обработчике красок я копирую память dc в окно dc.
Но я всунул этот процесс, когда у меня есть .gif (с несколькими кадрами), и я пробую к блитированию этого изображения gif на DC то время, это показывает только единственный кадр того, что gif отображают (стал обычным неподвижным изображением не изображение с анимацией).
как я могу сохранить это целое изображение gif в памяти dc и отобразить полное изображение gif на dc (с анимацией).
Я не могу использовать wx. AnimateCrl (), потому что мне нужно то изображение в memoryDC.
Любая действительно заметная справка.
memory-state по определению является статическим, memoryDC представляет состояние DC в заданное время, поэтому, если вы хотите анимацию, вам нужно будет обновлять memoryDC и окончательный выходной DC несколько раз, чтобы дать эффект анимации, но при в данный момент только один кадр Gif будет в памяти DC, если вы не используете квантовые компьютеры.
Итак, что вам нужно сделать, это использовать wx.animate.Animation, чтобы получить кадры GIF и нарисовать их один за другим на заданном DC с помощью таймера.
например. сделайте что-то подобное в событии ON_PAINT
ani = wx.animate.Animation("anim.gif")
frameImage = ani.GetFrame(cur_frame)
bmp = frameImage.ConvertToBitmap()
dc.DrawBitmap(bmp, 0, 0)