Ich mache ein Gtk2-Programm, das eine vorberechnete Daten Heatmap-Bild zu einem GtkDrawingArea rendert. Das Verfahren ist im Allgemeinen wie folgt:Kairo Bild nicht auf GtkDrawingArea
- erzeugen Heatmap-Bild auf einer Kairo-Bildoberfläche;
- Verbindung expose Ereignis der GtkDrawingArea;
- Rückruf in belichten, werden folgende Funktionen genannt:
in erster Funktion, klare vorherige Zeichnung zu schlichter grauer Farbe:
cairo_t* cr = gdk_cairo_create(widget->window);
cairo_set_source_rgb(cr, 0.5, 0.5, 0.5);
cairo_paint(cr);
cairo_destroy(cr);
in der zweiten Funktion, das Pre-gerendertes Bild malen:
cairo_t* cr = gdk_cairo_create(widget->window);
cairo_set_source_surface(cr, buffer_surface, 0, 0);
cairo_paint(cr);
cairo_destroy(cr);
in der 3. Funktion, zeichnen einige Vektor Indikationen:
cairo_t* cr = gdk_cairo_create(widget->window);
cairo_move_to(cr, xxx, xxx);
cairo_line_to(cr, xxx, xxx);
cairo_line_to(cr, xxx, xxx);
cairo_line_to(cr, xxx, xxx);
......
cairo_stroke(cr);
cairo_destroy(cr);
Allerdings hat nur die 1. und 3. Funktion Wirkung, das Bildanstrich in 2. Funktion wird nicht angezeigt: Resultierende GtkDrawingArea haben nur einen mittelgrauen Hintergrund mit schwarzen Linien.
Ich bin sicher, die Quelle Bildoberfläche ist mit Inhalt gefüllt, wie ich es in PNG-Datei exportiert und es hat Inhalt. Warum wird es nicht in der GUI angezeigt?