OpenCvSharp でお絵かきをします。

OpenCvSharp.CPlusPlus.Window クラスの OnMouseCallback にイベントハンドラを登録する形でマウスクリックを取得します。Polylines メソッドを利用することで、連続したなめらかな線を描くことができます。

ソースコード

キーバインド

  • Delete キー: クリア
  • SpaceBar(スペース)キー: 保存
  • Esc キー: 終了

少しだけ解説

取得した座標を格納するリスト

var pointList = new List<List<Point>>();

  
ドラッグ中かを示す。これが true の間、pointList コレクション内の同じ List に座標を登録し続け、それらを連続する点として扱う。false になった時点で次の List に移る。

bool moving = false;

  
コールバックを登録

window.OnMouseCallback += (e, x, y, flags) =>
{
    if (e == MouseEvent.LButtonDown)
    {
      // クリック時の処理
    }
    else if(e == MouseEvent.MouseMove && flags == MouseEvent.FlagLButton)
    {
      // ドラッグ時の処理
    }
    else if (e == MouseEvent.LButtonUp)
    {
      // クリック(ドラッグ)終了時の処理
    }
};

こんな感じで描ける

妖精さんっぽいなにか

人類は衰退しましたの妖精さんっぽいなにか

スポンサーリンク