/// <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); }
/// <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); })); }
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); } } }
/// <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]); }