2015-12-11 3 views
1

J'ai une image de motif que je dois répéter dans Gtk::DrawingArea en utilisant cairomm.Comment répéter un motif en utilisant cairomm?

J'ai essayé d'utiliser Cairo::ImageSource sans avoir de chance.

+1

Pourriez-vous montrer un échantillon du code que vous avez essayé et cela n'a pas fonctionné? Cela pourrait aider les autres utilisateurs à voir ce qui peut être amélioré. – Tonin

+0

Droit ... le fait est que je n'ai pas trouvé un seul exemple sur internet. J'ai donc dû déterrer la documentation du cairo, pour finalement trouver cette méthode magique 'set_extend'. Aucune autre solution trouvée! –

Répondre

2

Il est facile en utilisant Cairo::Pattern classe:

bool MyDrawingArea::on_draw(const Cairo::RefPtr<Cairo::Context> &cr) { 
    Cairo::RefPtr<Cairo::Pattern> image = Cairo::SurfacePattern::create(Cairo::ImageSurface::create_from_png("my_bg_pattern.png")); 
    image_->set_extend(Cairo::EXTEND_REPEAT); // THIS IS THE IMPORTANT BIT! 
    cr->set_source(image); 
    cr->paint(); 
}