我想有人可能会觉得它微不足道,但我在这里问它,因为我找不到一个直截了当的答案。
让我们深入研究这个问题:
拥有多个图像的资源以及不断使用这些图像的 cairo 上下文。当然,我可以这样做:
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++ 地图并将我的图标放入其中。然后,我想从地图中获取图像指针。我做了这样的事情:
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*