private void drawingPanelMouseDown(object sender, MouseButtonEventArgs e)
        {
            _capturedPosition = e.GetPosition(drawingPanel);
            _mouseCaptured = true;
            _newRect = true;
            var rect = new Rectangle { Height = 1, Width = 1, Opacity = 0.2 };
            drawingPanel.Children.Add(rect);
            Canvas.SetLeft(rect, _capturedPosition.X);
            Canvas.SetTop(rect, _capturedPosition.Y);

            rect.CaptureMouse();
            rect.MouseMove += (_s,_e) =>
            {
                if (_mouseCaptured)
                {
                    if (_capturedPosition.Y < _e.GetPosition(drawingPanel).Y)
                    {
                        rect.Height = _e.GetPosition(drawingPanel).Y - _capturedPosition.Y;
                    }
                    else
                    {
                        rect.Height = _capturedPosition.Y - _e.GetPosition(drawingPanel).Y;
                        Canvas.SetTop(rect, _e.GetPosition(drawingPanel).Y);
                    }
                    if (_capturedPosition.X < _e.GetPosition(drawingPanel).X)
                    {
                        rect.Width = _e.GetPosition(drawingPanel).X - _capturedPosition.X;
                    }
                    else
                    {
                        rect.Width = _capturedPosition.X - _e.GetPosition(drawingPanel).X;
                        Canvas.SetLeft(rect, _e.GetPosition(drawingPanel).X);
                    }
                }
            };

            rect.MouseLeftButtonDown += (_s,_e) =>
            {

            };

            rect.MouseRightButtonDown += (_s, _e) =>
            {
                drawingPanel.Children.Remove(rect);
            };

            rect.MouseUp += (_s, _e) =>
            {
                _mouseCaptured = false;
                _newRect = false;
                rect.ReleaseMouseCapture();
                ReleaseMouseCapture();
            };
        }
Example #2
0
            public bool Capture(Point pt)
            {
                this.tub = get_tier_ui(pt);
                if (tub == null /*|| tub.TiersControl.Items.Count == 1*/)
                    return false;

                pt.X = 0.0;
                pp_offs = mg.TransformToDescendant(tub).Transform(pt);
                pp_offs.X += tub.Margin.Left;
                pp_offs.Y += tub.Margin.Top;

                var sz = new Size(tub.ActualWidth, tub.ActualHeight);

                this.tui = new Rectangle
                {
                    Fill = new ImageBrush
                    {
                        ImageSource = __util.GetImage(tub, null, sz),
                        Stretch = Stretch.None
                    },
                    Width = sz.Width,
                    Height = sz.Height,
                    Margin = tub.Margin,
                };

                this.bb = BindingOperations.GetBinding(tub, VisibilityProperty);
                BindingOperations.ClearBinding(tub, VisibilityProperty);
                tub.Visibility = Visibility.Hidden;

                mg.Children.Add(tui);

                return tui.CaptureMouse();
            }