Now i am using Gtkmm. I want to maintain a reference to Cairo::Context or Cairo::Surface, so i can draw something on it anywhere. I am trying to do this , but failed. With following code , i am trying to keep a reference to Cairo:::Surface,but when on_expose_event was called secondly , it will fail. And i have tried to maintain a reference to Cairo::Context too, but failed either. Could some body give me an advice? Thanks in advance!
class MyArea : public Gtk::DrawingArea { public: virtual ~MyArea(); protected: //Override default signal handler: virtual bool on_expose_event(GdkEventExpose* event); private: Cairo::RefPtr<Cairo::Surface> surf_; }; MyArea::MyArea() { } MyArea::~MyArea() { } bool MyArea::on_expose_event(GdkEventExpose* event) { // This is where we draw on the window if(!surf_){ Glib::RefPtr<Gdk::Window> window = get_window(); Cairo::RefPtr<Cairo::Context> cr = window->create_cairo_context(); surf_ = cr->get_target(); } Cairo::RefPtr<Cairo::Context> cr = Cairo::Context::create(surf_); cr->set_line_width(10.0); cr->move_to(0, 0); cr->line_to(100, 100); cr->stroke(); return true; } -- Best Regards Bicen.Zhu
_______________________________________________ gtkmm-list mailing list gtkmm-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtkmm-list