1

gtkmm で次のコードを使用して描画領域を作成しました。

bool DrawingArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
{
cr->set_source_rgb(1.0, 1.0, 1.0);   // white background
cr->paint();
cr->move_to(0,0);
cr->line_to(10,10);
cr->line_to(20,20);
return true;
}

このコードは、描画領域に線を描画します。

ポイントを描画する関数を呼び出した後、このエリアにポイントを描画したいと考えています。同じ文脈で描き直したい。私はそれを次のようにしました:

void DrawingArea::on_point()
{
  cr->arc(10.0,10.0,1.0,1.0, 2 * M_PI);
  cr->set_source_rgba(0.0,0.0,0.8,0.6);
  cr->fill_preserve();
  cr->stroke();
}

上記の関数は、メニュー項目をクリックすると呼び出されます。gtkmm の queue_draw() 関数を使用できます。描画領域で再描画するにはどうすればよいですか?

どんな助けでも本当に感謝します!

4

0 に答える 0