Как отобразить .gif (с анимацией) на dc

в моем приложении у меня есть панель со связанным wxWindowDC и wxMemoryDC., я должен потянуть различную вещь на той панели как фоновый цвет сверх фонового цвета bg изображение и на вершине bg изображение, я должен нарисовать некоторый текст и т.д.

Я храню всю эту вещь в память dc, и наконец в обработчике красок я копирую память dc в окно dc.

Но я всунул этот процесс, когда у меня есть .gif (с несколькими кадрами), и я пробую к блитированию этого изображения gif на DC то время, это показывает только единственный кадр того, что gif отображают (стал обычным неподвижным изображением не изображение с анимацией).

как я могу сохранить это целое изображение gif в памяти dc и отобразить полное изображение gif на dc (с анимацией).

Я не могу использовать wx. AnimateCrl (), потому что мне нужно то изображение в memoryDC.

Любая действительно заметная справка.

1
задан mukul sharma 1 June 2010 в 09:57
поделиться

1 ответ

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)
2
ответ дан 3 September 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: