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