コード例 #1
0
        public CHnMMClassificationSystem(CHnMMParameter parameter)
        {
            ParameterSet = parameter;

            //apply parameters
            StrokeMap.minimumRadius        = parameter.minRadiusArea;
            StrokeMap.toleranceFactor      = parameter.toleranceFactorArea;
            StrokeMap.useAdaptiveTolerance = parameter.useAdaptiveTolerance;
            StrokeMap.hitProbability       = parameter.hitProbability;

            StrokeMap.useEllipsoid                       = parameter.useEllipsoid;
            StrokeMap.translationInvariant               = parameter.isTranslationInvariant;
            FixedAreaNumberStrokeMap.nAreas              = parameter.nAreaForStrokeMap;
            FixedAreaNumberStrokeMap.useContinuousAreas  = parameter.useContinuousAreas;
            StrokeMap.useSmallestCircle                  = parameter.useSmallestCircle;
            DynamicAreaNumberStrokeMap.AreaPointDistance = parameter.areaPointDistance;
            DynamicAreaNumberStrokeMap.useSmallestCircle = parameter.useSmallestCircle;


            var transitionSetup = new TransitionCreator(parameter.hitProbability, parameter.distEstName);

            if (parameter.useFixAreaNumber)
            {
                //HiddenModelCreator = new FixedAreaNumberModelCreator(transitionSetup);
                HiddenModelCreator = new FixedAreaNumberModelCreator(transitionSetup);
            }
            else
            {
                HiddenModelCreator = new DynamicAreaNumberModelCreator(transitionSetup);
            }
        }
        private void Element_MouseMove(object sender, MouseEventArgs e)
        {
            if (!IsEnabled)
            {
                return;
            }

            var position = new Lazy <Point>(() => GetMousePosition(e));

            if (_state == BehaviorState.MouseDown)
            {
                //Check to see if we're out of the dragging min
                //http://stackoverflow.com/questions/2068106/wpf-drag-distance-threshold

                var distanceMoved = _startingPosition - position.Value;

                if (Math.Abs(distanceMoved.X) >= SystemParameters.MinimumHorizontalDragDistance &&
                    Math.Abs(distanceMoved.Y) >= SystemParameters.MinimumVerticalDragDistance)
                {
                    //Focus
                    AssociatedObject.Focus();

                    e.Handled = true;

                    var sourceState = AssociatedObject.DataContext as StateViewModel;

                    if (sourceState != null)
                    {
                        TransitionCreator?.StartCreatingTransition(sourceState);

                        _state = BehaviorState.Dragging;
                    }
                    else
                    {
                        Reset();
                    }
                }
            }
            else if (_state == BehaviorState.Dragging)
            {
                //Drag
                TransitionCreator?.ContinueCreatingTransition(position.Value);

                e.Handled = true;
            }
        }
        private void ElementOnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            if (!IsEnabled)
            {
                return;
            }

            var position = new Lazy <Point>(() => _startingPosition = GetMousePosition(e));

            switch (_state)
            {
            case BehaviorState.Dragging:

                TransitionCreator?.FinishCreatingTransition(position.Value);

                break;
            }

            e.Handled = true;

            Reset();
        }