Tengo una imagen/pixbuf que quiero dibujar en un gtk.DrawingArea y actualizo frecuentemente, por lo que la operación de blitting debe ser rápida. Hacerlo de la manera fácil:¿Cuál es la forma más rápida de dibujar una imagen en Gtk +?
def __init__(self):
self.drawing_area = gtk.DrawingArea()
self.image = gtk.gdk.pixbuf_new_from_file("image.png")
def area_expose_cb(self, area, event):
self.drawing_area.window.draw_pixbuf(self.gc, self.image, 0, 0, x, y)
conduce sin embargo a un rendimiento muy lento, probablemente causado por el pixbuf no estar en el formato de pantallas de color.
Tampoco tuve éxito con El Cairo, ya que parece limitado a formatos de 24/32 bits y no tiene un formato de 16 bits (FORMAT_RGB16_565 no está soportado y desaprobado).
¿Qué alternativas hay para hacer dibujos rápidamente en Gtk +?
Es el rendimiento no parpadeo. Intento hacer un desplazamiento interactivo/animación en pantalla completa en el OLPC, que no es muy rápido para comenzar y tiene una pantalla bastante grande además de eso y se ejecuta en 16 bits. Hacer lo mismo en SDL funciona sin problemas. Usar un gtk.Layout y usarlo para el desplazamiento es bastante rápido, pero hacer el desplazamiento manualmente dibujando en un gtk.DrawingArea (ya que es posible que desee agregar más efectos más adelante) es completamente inutilizable, lento. – Grumbel