wx.StaticBitmap или wx.DC: Что лучше использовать для постоянно меняющихся изображений? - PullRequest
2 голосов
/ 20 сентября 2009

Я хотел бы иметь Python GUI, который загружает различные изображения из файлов. Я видел много примеров загрузки изображения с кодом вроде:

img = wx.Image("1.jpg", wx.BITMAP_TYPE_ANY, -1)
sb = wx.StaticBitmap(rightPanel, -1, wx.BitmapFromImage(img))
sizer.Add(sb)

Похоже, он подходит для образа, который будет существовать всю жизнь программы. Я не мог найти элегантный способ удалить / перезагрузить изображения с этим. Будет ли лучше использовать wx.DC для моего приложения?

Ответы [ 3 ]

1 голос
/ 20 сентября 2009

Если у вас быстро меняются большие изображения или вы хотели бы получить какой-то собственный эффект в будущем, лучше написать свой собственный элемент управления и рисовать, используя paintDC, и это не так сложно.

Делая свой собственный рисунок, вы можете правильно масштабировать, избегать мерцания и, если хотите, можете смешивать одно изображение с другим:)

0 голосов
/ 20 сентября 2009

читаю здесь: http://docs.wxwidgets.org/trunk/classwx_static_bitmap.html

"Собственные реализации на некоторых платформах предназначены только для отображения маленьких значков в диалоговых окнах. В частности, в Windows 9x размер растрового изображения ограничен 64 * 64 пикселями."

Что может быть проблемой. Если вы используете DC, то вам, возможно, придется «удвоить буфер» его, или он может мигать при перерисовке, изменении размера или обновлении.

В противном случае мне кажется, что вы должны использовать «нормальный» растровое изображение, если вы хотите его часто обновлять.

0 голосов
/ 20 сентября 2009

Вам не нужно удалять StaticBitmap, вы можете просто установить для него другое растровое изображение, используя метод SetBitmap.

Если новое изображение имеет другие размеры, вам, вероятно, придется сделать явный вызов Layout для его родителя, чтобы настроить размеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...