コード例 #1
0
        private void OnPictureBoxMouseDown(object sender, MouseEventArgs eargs)
        {
            if (_trackPointDirect != null)
            {
                return;
            }

            if (_trackPointReverse != null)
            {
                return;
            }

            if (eargs.Button != MouseButtons.Left)
            {
                return;
            }

            var currentPoint = new Point(eargs.X, eargs.Y);

            if (_mouseMovingState != null)
            {
                _mouseMovingState = null;
                return;
            }

            if (!_stacks.ContainsKey(sender))
            {
                return;
            }

            _mouseMovingState = new MouseMovingState {
                Current = currentPoint, Start = currentPoint
            };
        }
コード例 #2
0
ファイル: Main.cs プロジェクト: ashamsutdinov/RGDissertation
        private void EndSelect(object sender, MouseEventArgs e)
        {
            var pb = CheckCanDrawRect(sender, e);

            if (pb == null)
            {
                return;
            }

            var currentPoint = new Point(e.X, e.Y);

            _mouseMovingState.End = currentPoint;

            var rect = GetRectangle(_mouseMovingState.Start, _mouseMovingState.End);

            if ((rect.Width < 2 || rect.Height < 2) && _analisysMode != AnalisysMode.TrackPoint)
            {
                _mouseMovingState = null;
                return;
            }
            DrawRectangle(rect);

            var pt1   = _processor.Current.MapToRGFrame(new Point(rect.Left, rect.Bottom));
            var pt2   = _processor.Current.MapToRGFrame(new Point(rect.Right, rect.Top));
            var rectF = new RectangleF(pt1.X, pt1.Y, pt2.X - pt1.X, pt2.Y - pt1.Y);

            switch (_analisysMode)
            {
            case AnalisysMode.Zoom:
                _processor.CreateNew(rectF, _plotPanel.Size);
                _processor.Draw();
                break;

            case AnalisysMode.TrackPoint:
                _processor.StartTrackPoint(pt1, _plotPanel.Size);
                _processor.Draw();
                var dynT = new Dyn(this);
                dynT.Show();
                break;

            case AnalisysMode.TrackBoundary:
                _processor.StartBoundaryAnalysis(rectF, _plotPanel.Size);
                _processor.Draw();
                var dyn = new Dyn(this);
                dyn.Show();
                break;
            }

            _mouseMovingState = null;
        }
コード例 #3
0
ファイル: Main.cs プロジェクト: ashamsutdinov/RGDissertation
        private void BeginSelect(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }

            var currentPoint = new Point(e.X, e.Y);

            if (_mouseMovingState != null)
            {
                _mouseMovingState = null;
                return;
            }

            _mouseMovingState = new MouseMovingState {
                Current = currentPoint, Start = currentPoint
            };
        }
コード例 #4
0
        private void OnPictureBoxMouseUp(object sender, MouseEventArgs eargs)
        {
            var             currentPoint = new Point(eargs.X, eargs.Y);
            ProcessingStack stack;

            #region Track point

            #region Track direct

            if (_trackPointDirect != null)
            {
                if (_stacks.ContainsKey(sender))
                {
                    stack = _stacks[sender];
                    var pt = stack.GetCPoint(currentPoint);
                    pbC1C2.Cursor = Cursors.Default;
                    pbC0C1.Cursor = Cursors.Default;
                    pbC0C2.Cursor = Cursors.Default;

                    var trackPointSlide = new TrackPointSlide(_trackPointDirect.Iterations, pt, _trackPointDirect.N, _trackPointDirect.Alpha);
                    trackPointSlide.Show(this);
                    trackPointSlide.TrackPointChanged += ts =>
                    {
                        var act = new SceneTrackPointDirectAction
                        {
                            Alpha           = ts.Alpha,
                            N               = ts.N,
                            InitialPoint    = pt,
                            IterationsCount = ts.PointsCount,
                            DrawFullPath    = ts.ShowFullPath
                        };
                        ActionBodySimple(act, true);
                        flowLayoutPanel.Update();
                    };
                }
                _trackPointDirect = null;
                return;
            }

            #endregion

            #region Track reserse

            if (_trackPointReverse != null)
            {
                if (_stacks.ContainsKey(sender))
                {
                    stack = _stacks[sender];
                    var pt = stack.GetCPoint(currentPoint);
                    pbC1C2.Cursor = Cursors.Default;
                    pbC0C1.Cursor = Cursors.Default;
                    pbC0C2.Cursor = Cursors.Default;

                    var trackPointSlide = new TrackPointSlide(_trackPointReverse.Iterations, pt, _trackPointReverse.N, _trackPointReverse.Alpha);
                    trackPointSlide.Show(this);
                    trackPointSlide.TrackPointChanged += ts =>
                    {
                        var act = new SceneTrackPointReverseAction
                        {
                            Alpha           = ts.Alpha,
                            N               = ts.N,
                            InitialPoint    = pt,
                            IterationsCount = ts.PointsCount,
                            DrawFullPath    = ts.ShowFullPath
                        };
                        ActionBodySimple(act, true);
                        flowLayoutPanel.Update();
                    };
                }
                _trackPointReverse = null;
                return;
            }

            #endregion

            #endregion

            var pb = CheckCanDrawRect(sender, eargs);
            if (pb == null)
            {
                return;
            }

            _mouseMovingState.End = currentPoint;

            stack = _stacks[sender];
            var rect = ProcessingScene.GetRectangle(_mouseMovingState.Start, _mouseMovingState.End);
            if (rect.Width < 2 || rect.Height < 2)
            {
                _mouseMovingState = null;
                return;
            }

            var image = stack.DrawRectangle(rect, Config.AreaBorderColor);
            pb.Image = image;
            flowLayoutPanel.Update();

            stack.ZoomRectangle(rect);
            pb.Image = stack.CurrentFrame.ActualImage;
            flowLayoutPanel.Update();

            _mouseMovingState = null;
        }