2015-12-11 10 views
1

У меня есть образ образца, который мне нужно повторить в моем Gtk::DrawingArea, используя cairomm.Как повторить шаблон с использованием cairomm?

Я пробовал использовать Cairo::ImageSource без везения.

+1

Не могли бы вы показать образец кода, который вы пытались и что не работает? Это может помочь другим пользователям понять, что можно улучшить. – Tonin

+0

Правильно ... дело в том, что я не нашел ни одного примера в Интернете. Поэтому мне пришлось выкопать документацию по каиру, наконец, найти этот волшебный метод 'set_extend'. Никакого другого решения не найдено! –

ответ

2

Это легко с помощью Cairo::Pattern класс:

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(); 
}