Пример #1
0
        public MainWindow()
        {
            InitializeComponent();
            var item = new SysColorItem
            {
                Name  = "Red",
                Color = Colors.Red
            };

            ColorPicker1.SelectedColor = item;
        }
Пример #2
0
        private void Window_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
        {
            try
            {
                if (IsMouseDown && IsEnableDraw)
                {
                    var curx = e.GetPosition(this).X;
                    var cury = e.GetPosition(this).Y;

                    var r     = new System.Windows.Shapes.Rectangle();
                    var brush = new SolidColorBrush(Colors.White)
                    {
                        Opacity = 0.5
                    };
                    r.Stroke          = brush;
                    r.Fill            = brush;
                    r.Opacity         = 0.5;
                    r.StrokeThickness = 1;
                    r.Width           = Math.Abs(curx - ZoneFirst.ZoneX);
                    r.Height          = Math.Abs(cury - ZoneFirst.ZoneY);
                    r.MouseEnter     += (s, ev) => Mouse.OverrideCursor = System.Windows.Input.Cursors.Cross;
                    r.MouseLeave     += (s, ev) => Mouse.OverrideCursor = System.Windows.Input.Cursors.Hand;
                    r.KeyDown        += ZoneRectangleKeyDown;

                    Cnv.Children.Clear();
                    Cnv.Children.Add(r);

                    var zoneX = ZoneFirst.ZoneX;
                    var zoneY = ZoneFirst.ZoneY;
                    if (curx > ZoneFirst.ZoneX && cury > ZoneFirst.ZoneY)
                    {
                        Canvas.SetLeft(r, ZoneFirst.ZoneX);
                        Canvas.SetTop(r, ZoneFirst.ZoneY);
                    }

                    if (curx < ZoneFirst.ZoneX && cury < ZoneFirst.ZoneY)
                    {
                        Canvas.SetLeft(r, curx);
                        Canvas.SetTop(r, cury);

                        zoneX = curx;
                        zoneY = cury;
                    }

                    if (curx > ZoneFirst.ZoneX && cury < ZoneFirst.ZoneY)
                    {
                        Canvas.SetLeft(r, ZoneFirst.ZoneX);
                        Canvas.SetTop(r, cury);
                        zoneY = cury;
                    }

                    if (curx < ZoneFirst.ZoneX && cury > ZoneFirst.ZoneY)
                    {
                        Canvas.SetLeft(r, curx);
                        Canvas.SetTop(r, ZoneFirst.ZoneY);
                        zoneX = curx;
                    }

                    if (e.LeftButton == MouseButtonState.Released)
                    {
                        ZoneFirst.ZoneWidth  = Math.Abs(e.GetPosition(this).X - ZoneFirst.ZoneX);
                        ZoneFirst.ZoneHeight = Math.Abs(e.GetPosition(this).Y - ZoneFirst.ZoneY);
                        ZoneFirst.ZoneX      = zoneX;
                        ZoneFirst.ZoneY      = zoneY;
                        IsEnableDraw         = false;
                        CapturedComplete     = true;

                        if (IsDrawMark)
                        {
                            ////Add button Close
                            var buttonOk = new System.Windows.Controls.Button
                            {
                                Name             = "ButtonOk",
                                Width            = 70,
                                Height           = 30,
                                Content          = "OK",
                                CommandParameter = "",
                                Opacity          = 1,
                            };
                            buttonOk.MouseEnter       += (s, ev) => Mouse.OverrideCursor = System.Windows.Input.Cursors.Hand;
                            buttonOk.MouseLeave       += (s, ev) => Mouse.OverrideCursor = System.Windows.Input.Cursors.Arrow;
                            buttonOk.PreviewMouseDown += OkButtonClick;
                            buttonOk.KeyDown          += ZoneRectangleKeyDown;
                            var peer       = new ButtonAutomationPeer(buttonOk);
                            var invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                            invokeProv?.Invoke();

                            Cnv.Children.Add(buttonOk);
                            Canvas.SetLeft(buttonOk, ZoneFirst.ZoneX + ZoneFirst.ZoneWidth - 70);

                            //Setting top position
                            var buttonTop = ZoneFirst.ZoneY + ZoneFirst.ZoneHeight;
                            if (buttonTop * ZoneFirst.ScaleFactor > CurrentScreen.Bounds.Y + CurrentScreen.Bounds.Height)
                            {
                                buttonTop = buttonTop - 35;
                            }
                            Canvas.SetTop(buttonOk, buttonTop);

                            //Add color picker
                            var item = new SysColorItem
                            {
                                Name  = "Red",
                                Color = Colors.Red
                            };
                            _colorPicker = new ColorPicker()
                            {
                                FillColor     = ColorPicker.SourceColorType.LitteColors,
                                SelectedColor = item,
                                Width         = 110,
                                Height        = 30
                            };
                            _colorPicker.MouseEnter       += (s, ev) => Mouse.OverrideCursor = System.Windows.Input.Cursors.Hand;
                            _colorPicker.MouseLeave       += (s, ev) => Mouse.OverrideCursor = System.Windows.Input.Cursors.Arrow;
                            _colorPicker.PreviewMouseDown += ColorPickerClick;
                            _colorPicker.KeyDown          += ZoneRectangleKeyDown;
                            Cnv.Children.Add(_colorPicker);
                            Canvas.SetLeft(_colorPicker, ZoneFirst.ZoneX + ZoneFirst.ZoneWidth - 180);
                            Canvas.SetTop(_colorPicker, buttonTop);


                            IsMouseDown = false;

                            //Enable drawing mark
                            IsEnableDrawMark = true;
                        }
                        else
                        {
                            IsMouseDown = false;
                            Cnv.Children.Clear();
                            Close();
                        }
                    }
                }

                if (IsEnableDrawMark && IsDrawMarkMouseDown)
                {
                    var curMarkx = e.GetPosition(this).X;
                    var curMarky = e.GetPosition(this).Y;

                    //If over rectangle first
                    if (curMarkx < ZoneFirst.ZoneX)
                    {
                        curMarkx = ZoneFirst.ZoneX;
                    }
                    if (curMarkx > ZoneFirst.ZoneX + ZoneFirst.ZoneWidth)
                    {
                        curMarkx = ZoneFirst.ZoneX + ZoneFirst.ZoneWidth;
                    }
                    if (curMarky < ZoneFirst.ZoneY)
                    {
                        curMarky = ZoneFirst.ZoneY;
                    }
                    if (curMarky > ZoneFirst.ZoneY + ZoneFirst.ZoneHeight)
                    {
                        curMarky = ZoneFirst.ZoneY + ZoneFirst.ZoneHeight;
                    }

                    //Convert System.Window.Media.Color to System.Drawing.Color
                    System.Drawing.Color newColor = System.Drawing.Color.FromName(_colorPicker.SelectedColor.Name);
                    ZoneMarkItem.BorderColor = newColor;
                    ZoneMarkItem.Thinkness   = 2;

                    var rMark = new System.Windows.Shapes.Rectangle
                    {
                        Stroke          = new SolidColorBrush(_colorPicker.SelectedColor.Color),
                        Fill            = new SolidColorBrush(Colors.Transparent),
                        Opacity         = 1,
                        StrokeThickness = 2,
                        Width           = Math.Abs(curMarkx - ZoneMarkItem.ZoneX),
                        Height          = Math.Abs(curMarky - ZoneMarkItem.ZoneY)
                    };
                    if (!_isDrawed)
                    {
                        _drawIndex = Cnv.Children.Add(rMark);
                        _isDrawed  = true;
                    }
                    else
                    {
                        Cnv.Children.RemoveAt(_drawIndex);
                        _drawIndex = Cnv.Children.Add(rMark);
                    }

                    var zoneMarkX = ZoneMarkItem.ZoneX;
                    var zoneMarkY = ZoneMarkItem.ZoneY;
                    if (curMarkx > ZoneMarkItem.ZoneX && curMarky > ZoneMarkItem.ZoneY)
                    {
                        Canvas.SetLeft(rMark, ZoneMarkItem.ZoneX);
                        Canvas.SetTop(rMark, ZoneMarkItem.ZoneY);
                    }

                    if (curMarkx < ZoneMarkItem.ZoneX && curMarky < ZoneMarkItem.ZoneY)
                    {
                        Canvas.SetLeft(rMark, curMarkx);
                        Canvas.SetTop(rMark, curMarky);

                        zoneMarkX = curMarkx;
                        zoneMarkY = curMarky;
                    }

                    if (curMarkx > ZoneMarkItem.ZoneX && curMarky < ZoneMarkItem.ZoneY)
                    {
                        Canvas.SetLeft(rMark, ZoneMarkItem.ZoneX);
                        Canvas.SetTop(rMark, curMarky);
                        zoneMarkY = curMarky;
                    }

                    if (curMarkx < ZoneMarkItem.ZoneX && curMarky > ZoneMarkItem.ZoneY)
                    {
                        Canvas.SetLeft(rMark, curMarkx);
                        Canvas.SetTop(rMark, ZoneMarkItem.ZoneY);
                        zoneMarkX = curMarkx;
                    }
                    if (e.LeftButton == MouseButtonState.Released)
                    {
                        ZoneMarkItem.ZoneWidth  = Math.Abs(e.GetPosition(this).X - ZoneMarkItem.ZoneX);
                        ZoneMarkItem.ZoneHeight = Math.Abs(e.GetPosition(this).Y - ZoneMarkItem.ZoneY);
                        ZoneMarkItem.ZoneX      = zoneMarkX;
                        ZoneMarkItem.ZoneY      = zoneMarkY;
                        ZoneMark.Add(ZoneMarkItem);

                        IsDrawMarkMouseDown = false;
                        _isDrawed           = false;
                        _rectangleIndex    += 1;

                        //Enable number of Red Mark Rectangle is 1, if Pro version is 10
                        if (_rectangleIndex > 11)
                        {
                            IsEnableDrawMark = false;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show("Window_MouseMove: " + ex.Message);
                throw;
            }
        }