Полагаю, что это может показаться тривиальным, но я спрашиваю здесь, поскольку я не смог найти простой ответ.
Давайте углубимся в проблему:
Наличие нескольких изображений вместес контекста Каира, который использует эти изображения непрерывно.Естественно, я могу сделать это, как показано ниже:
Glib::RefPtr<Gdk::Pixbuf> image;
image = Gdk::Pixbuf::create_from_resource("/image/icon1"); //there are numerous icons out there
Затем я могу использовать его с указателем контекста Cairo следующим образом:
bool MyClass::on_draw(const Cairo::RefPtr<Cairo::Context> &cr)
{
// ... some code
Gdk::Cairo::set_source_pixbuf(cr, image, x0 , y0); //x0 , y0 : somewhere in the context
cr->paint();
return true;
}
Изображения не меняются, но каждый раз создается экземпляр Pixbuf.Я хочу использовать c ++ map и поместить в него свои иконки.Затем я хочу получить указатель изображения с карты.Я сделал что-то вроде этого:
std::map<Glib::ustring , GdkPixbuf*> map_Images;
// ..
map_images.insert(pair<Glib::ustring , GdkPixbuf* >("icon1" , image->gobj() )); // I do the same with all of my frequently referred icons
Теперь я не знаю, как мне назвать эту карту для использования в контексте Каира.Другими словами, как мне сделать Glib :: RefPtr из базового объекта, скажем, GdkPixbuf *