3

で mouseevents を使用して線を引きたいと思いGtk::DrawableAreaます。私が欲しいのは次のようなものです:

  1. ラインボタンをクリックして、ラインイベントを有効にします
  2. 作図領域で最初の点(すでに描かれている)を選択
  3. 次に、描画領域で 2 番目の点 (再び描画済み) を選択します。
  4. 2 点間に線を引く必要があります

私がすでに持っているもの:

  1. Gtk::DrawingArea
  2. 線を作成するために必要な、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;
}

PS: この on_draw 関数で 2 つのポイントを簡単に追加できます。私はGtkmmの初心者なので、親切にそれを明らかにするのを手伝ってください。

4

1 に答える 1