Exemplo n.º 1
0
        /// <summary>
        /// Right mouse button is released
        /// </summary>
        /// <param name="control"></param>
        /// <param name="e"></param>
        public override void OnMouseUp(MapControl control, MouseEventArgs e)
        {
            if (selectMode == SelectionMode.NetSelection)
            {
                // Remove old selection rectangle
                ControlPaint.DrawReversibleFrame(
                    control.RectangleToScreen(DrawRectangle.GetNormalizedRectangle(startPoint, lastPoint)),
                    Color.Black,
                    FrameStyle.Dashed);

                // Make group selection
                control.Objects.SelectInRectangle(
                    DrawRectangle.GetNormalizedRectangle(startPoint, lastPoint));
            }
            selectMode = SelectionMode.None;


            if (resizedObject != null)
            {
                // after resizing
                resizedObject.Normalize();
                resizedObject = null;
            }

            control.Refresh();

            if (commandChangeState != null && wasMove)
            {
                // Keep state after moving/resizing and add command to history
                commandChangeState.NewState(control.Objects);
                control.AddCommandToHistory(commandChangeState);

                commandChangeState = null;
            }
        }
Exemplo n.º 2
0
        private void OnLableValueChanged(string lable, object value)
        {
            CommandChangeState c = new CommandChangeState(Global.control.Objects);

            switch (lable)
            {
            case "Name":
                marker.ToolTipText = (string)value;
                break;

            case "ToolTipMode":
                marker.ToolTipMode = (MarkerTooltipMode)value;
                break;

            case "Lat":
            case "Lng":
                marker.Position = property.LocalPosition;
                PointsArray[0]  = property.LocalPosition;
                break;

            case "MarkerType":
                MARKER_TYPE markerType = (MARKER_TYPE)value;
                if (markerType == MARKER_TYPE.Green)
                {
                    property.ImageFile = @"image\marker_0.ico";
                }
                else if (markerType == MARKER_TYPE.Yellow)
                {
                    property.ImageFile = @"image\marker_2.ico";
                }
                else if (markerType == MARKER_TYPE.Red)
                {
                    property.ImageFile = @"image\marker_1.ico";
                }
                else if (markerType == MARKER_TYPE.Gray)
                {
                    property.ImageFile = @"image\marker_3.ico";
                }
                marker.SetBitmap(new Bitmap(AppDomain.CurrentDomain.BaseDirectory + property.ImageFile));
                this.NotifyImageChanged(this, new EventArgs());
                break;
            }
            Global.control.UpdateMarkerLocalPosition(marker);
            Global.control.PropertyChanged(property);
            Global.control.Refresh();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Left mouse button is pressed
        /// </summary>
        /// <param name="control"></param>
        /// <param name="e"></param>
        public override void OnMouseDown(MapControl control, MouseEventArgs e, int zoom)
        {
            commandChangeState = null;
            wasMove            = false;

            selectMode = SelectionMode.None;
            Point point = new Point(e.X, e.Y);

            // Test for resizing (only if control is selected, cursor is on the handle)
            foreach (DrawObject o in control.Objects.Selection)
            {
                int handleNumber = o.HitTest(point);
                if (handleNumber > 0)
                {
                    selectMode = SelectionMode.Size;

                    // keep resized object in class member
                    resizedObject       = o;
                    resizedObjectHandle = handleNumber;

                    // Since we want to resize only one object, unselect all other objects
                    control.Objects.UnselectAll();
                    o.Selected = true;

                    commandChangeState = new CommandChangeState(control.Objects);

                    break;
                }
            }

            // Test for move (cursor is on the object)
            if (selectMode == SelectionMode.None)
            {
                int        n1 = control.Objects.Count;
                DrawObject o  = null;

                for (int i = 0; i < n1; i++)
                {
                    if (control.Objects[i].HitTest(point) == 0)
                    {
                        o = control.Objects[i];
                        break;
                    }
                }

                if (o != null)
                {
                    selectMode = SelectionMode.Move;

                    // Unselect all if Ctrl is not pressed and clicked object is not selected yet
                    if ((Control.ModifierKeys & Keys.Control) == 0 && !o.Selected)
                    {
                        control.Objects.UnselectAll();
                    }

                    // Select clicked object
                    o.Selected         = true;
                    commandChangeState = new CommandChangeState(control.Objects);
                    control.Cursor     = Cursors.Hand;
                }
            }

            // Net selection
            if (selectMode == SelectionMode.None)
            {
                // click on background
                if ((Control.ModifierKeys & Keys.Control) == 0)
                {
                    control.Objects.UnselectAll();
                }
                selectMode       = SelectionMode.NetSelection;
                control.Selected = true;
            }

            lastPoint.X  = e.X;
            lastPoint.Y  = e.Y;
            startPoint.X = e.X;
            startPoint.Y = e.Y;

            control.Refresh();

            if (selectMode == SelectionMode.NetSelection)
            {
                // Draw selection rectangle in initial position
                ControlPaint.DrawReversibleFrame(
                    control.RectangleToScreen(DrawRectangle.GetNormalizedRectangle(startPoint, lastPoint)),
                    Color.Black,
                    FrameStyle.Dashed);
            }
        }