2014-02-21 14 views
2

Попытка создать Pixbuf из ImageSurface, но все, что я получаю, это черные пиксели. Есть идеи?Cairo.ImageSurface to Gdk.Pixbuf?

Cairo.ImageSurface surface = mysurface; 
int w = surface.Width; 
int h = surface.Height; 
Gdk.Pixmap pixmap = new Gdk.Pixmap(null, w, h, 24); 
using (Cairo.Context cr = Gdk.CairoHelper.Create(pixmap)) { 
    cr.Operator = Cairo.Operator.Source; 
    cr.SetSource(surface); 
    cr.Paint(); 
} 
_pixbuf = Gdk.Pixbuf.FromDrawable(pixmap, Gdk.Colormap.System, 0, 0, 0, 0, w, h); 

ответ

1

Оказывается, что код выше точно правильно ... Я просто не подходило что-нибудь на поверхность. Прекрасно работает!

4

Если вы используете ГДК 3, вы в удачу, как это должно работать:

my_pixbuf = Gdk.pixbuf_get_from_surface (surface, x, y, w, h); 
+0

Увы, я использую Gtk2. –

 Смежные вопросы

  • Нет связанных вопросов^_^