It does not seem neccessary to create 2 separate Cairo Contexts:

class MyArea : public Gtk::DrawingArea
{
public:
    virtual ~MyArea();
protected:
//Override default signal handler:
    virtual bool on_expose_event(
>
> GdkEventExpose* event);
> };
> MyArea::MyArea()
> {
> }
> MyArea::~MyArea()
> {
> }
> bool MyArea::on_expose_event(GdkEventExpose* event)
> {
> // This is where we draw on the window
>     Cairo::RefPtr<Cairo::Context> cr = window->create_cairo_context();
>     cr->set_line_width(10.0);
>     cr->move_to(0, 0);
>     cr->line_to(100, 100);
>     cr->stroke();
>     return true;
> }


This will work equally well. Is there any specific reason why you want to
keep the surface member in the class and use it the way you wrote it in the
preceding mail?

M.


2008/12/3 BC Zhu <[EMAIL PROTECTED]>

> 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
>
>


-- 
Please note that according to the German law on data retention,
information on every electronic information exchange with me is
retained for a period of six months.
[Bitte beachten Sie, dass dem Gesetz zur Vorratsdatenspeicherung zufolge
jeder elektronische Kontakt mit mir sechs Monate lang gespeichert wird.]
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to