Пример #1
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="_coordManager"></param>
 /// <param name="_parameterManager"></param>
 private GridMarkSearch(CoordManager _coordManager, ParameterManager _parameterManager)
     : base(_parameterManager)
 {
     this.coordManager       = _coordManager;
     this.parameterManager   = _parameterManager;
     this.GridMarkRecognizer = coordManager;
     this.utility            = new GridMarkDefinitionUtil(coordManager);
 }
Пример #2
0
 /// <summary>
 /// グリッドマーク自動検索処理でグリッドマークが見つかったときのイベントハンドラです.
 /// </summary>
 private void gridMark_Found(object sender, GridMarkEventArgs e)
 {
     Dispatcher.BeginInvoke(new Action(delegate {
         DrawCrossMark(e.ViewerPoint.X, e.ViewerPoint.Y);
         string gridmark = GridMarkDefinitionUtil.ToString(e.GridMarkPoint);
         string message  = string.Format(Properties.Strings.FoundNow, gridmark, e.EncoderPoint.X, e.EncoderPoint.Y);
         WriteLine(message);
     }));
 }
Пример #3
0
        public void PredCoords()
        {
            GridMarkDefinitionUtil util = new GridMarkDefinitionUtil(coord);

            for (int i = 0; i < CoordManager.AllGridMarksNum; ++i)
            {
                GridMarkPoint mark     = (GridMarkPoint)i;
                Vector2       position = util.GetGridMarkCoord(mark);
                if (coord.GetGridMark(mark).Existed)
                {
                    DrawCircle(ellipses[i], position.x, position.y, 4, Brushes.Blue);
                }
                else if (coord.DefinedGridMarkNum >= 2)
                {
                    SimurateGridMark(position.x, position.y, mark);
                }
            }
        }
Пример #4
0
        /// <summary>
        /// グリッドマークを定義するために描画,ダイアログボックスなどのUIを提供し,
        /// グリッドマークを定義します.
        /// <para>ステージのビュワーに,グリッドマークとして定義する座標にバツ印を描画します.
        /// そして,どのグリッドマークとして定義するかをユーザに確認し,
        /// 選択されたグリッドマークとして定義します.
        /// </para>
        /// </summary>
        /// <param name="x">定義するグリッドマークのX座標(ビュワー上の座標)</param>
        /// <param name="y">定義するグリッドマークのY座標(ビュワー上の座標)</param>
        public void ShowGridMarkDifinitionUi(double x, double y)
        {
            Line[] lines = DrawCrossMark(x, y);
            // Grid markを定義する位置を確認するダイアログボックスを表示する
            GridMarkDefinitionUtil util     = new GridMarkDefinitionUtil(coordManager);
            SelectGridMarkWindow   sgWindow = new SelectGridMarkWindow();

            sgWindow.GridMarkPoint = util.NextPoint;
            // ユーザーがGrid markを定義する位置を選択したならば,その箇所でGridf markを定義する.
            if ((Boolean)sgWindow.ShowDialog())
            {
                Camera  camera = Camera.GetInstance();
                Vector2 emulsionSystemPoint = coordManager.TransToEmulsionCoord((int)x, (int)y);
                coordManager.SetGridMark(emulsionSystemPoint, sgWindow.GridMarkPoint, camera.ArrayImage);
                WriteLine(string.Format(Properties.Strings.DefineGridMark,
                                        sgWindow.GridMarkPoint, emulsionSystemPoint.X, emulsionSystemPoint.Y));
            }
            // バツ印を消去
            emulsionViewerCanvas.Children.Remove(lines[0]);
            emulsionViewerCanvas.Children.Remove(lines[1]);
        }