【发布时间】:2014-07-09 19:09:01
【问题描述】:
我希望在Gtk::DrawableArea 上使用鼠标事件画一条线。
我想要的是这样的:
- 点击线路按钮激活线路事件
- 在绘图区域中选择第一个点(已绘制)
- 现在在绘图区域中选择第二个点(再次已绘制)
- 应该在两点之间画线
我已经拥有的:
Gtk::DrawingArea- 使用 cairo 绘制的 2 个点(手动圆圈),用于创建线条
下面是我调用 on_draw 函数的构造函数。
drawingArea:: drawingArea()
{
signal_draw().connect(sigc::mem_fun(*this, &drawingArea::on_draw), false);
}
而on_draw函数绘制背景:
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->save();
cr->arc(10.0, 10.0, 1.0, 0.0, 2 * M_PI); // full circle
cr->set_source_rgba(0.0, 0.0, 0.8, 0.6); // partially translucent
cr->fill_preserve();
cr->restore();
cr->stroke();
return true;
}
P.S:我可以很容易地在这个 on_draw 函数中添加两个点。我是 Gtkmm 的新手,所以请帮忙解释一下。
【问题讨论】:
标签: mouseevent line cairo gtkmm drawingarea