2012-02-08 5 views
1

私はcairommを使って描画するgtkmmアプリケーションをコンパイルしようとしています。私は、G ++を使用していGtkmm2.4のSignal_draw

error: ‘signal_draw’ was not declared in this scope

:私は私が手gtkmm2.4を使用して、それをコンパイルしようとする それはgtkmm3.0を用いた微細コンパイルけど。

gtkmm2.4にsignal_drawがないようです(私は間違っていますか?)。代わりに使用できる関数/シグナルはありますか?

ありがとうございます。

私の悪い英語を申し訳ありません。

いくつかのコード:

class egclass: public Gtk::DrawingArea

{

public:

egclass();

virtual ~egclass();

virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr); 

};

egclass::egclass()

{

#ifndef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED

signal_draw().connect(sigc::mem_fun(*this, &egclass::on_draw), false);

#endif

}

答えて

3

年上のgtkmm 2.4は、代わりにon_expose_eventを持っている:あなたはGTK + CのAPIで、描画のためのカイロコンテキストを作成する必要がある場合

virtual bool on_expose_event(GdkEventExpose* event); 

が、それはこのような何かを行きます:

cairo_t *cr; 

cr = gdk_cairo_create (event->window); 
gdk_cairo_region (cr, event->region); 
cairo_clip (cr); 

/* do your drawing */ 

cairo_destroy (cr); 

...上記のスニペットをgtkmmに翻訳することは練習問題として残されています読者に。実行するために

+0

[OK]を、それでも私はカイロ:: RefPtr <カイロ::コンテキスト>必要があります。

また、以下のリンクを参照してください。描く、どうすれば入手できますか? – tomxey

+0

答えを更新しました – kalev

+0

ありがとうございました。 – tomxey

関連する問題