예제 #1
0
        private void Surface_Drop(object sender, DragEventArgs e)
        {
            DrawBufLine.ReBuild();
            var data = e;

            if (data.Handled == false)
            {
                var element = (BaseComponentUI)data.Data.GetData("ComponentUI");
                if (element != null)
                {
                    if (!element.Construct)
                    {
                        if (data.AllowedEffects.HasFlag(DragDropEffects.Move))
                        {
                            data.Effects = DragDropEffects.Move;
                        }
                        //MoveAllLine(element);
                    }
                    else
                    {
                        if (data.AllowedEffects.HasFlag(DragDropEffects.Copy))
                        {
                            CreateComponent(element.NameElement,
                                            e.GetPosition(sender as Canvas ?? throw new InvalidOperationException()));
                        }
                    }
                }
            }
        }
예제 #2
0
        private void Surface_DragOver(object sender, DragEventArgs e)
        {
            var data = e;

            if (data.Handled == false)
            {
                var element = (BaseComponentUI)data.Data.GetData("ComponentUI");
                if (data.Data.GetData("DataLine") != null)
                {
                    var elementLine = (DataLine)data.Data.GetData("DataLine");
                    var bufPointPin = DrawBufLine.LastPin;
                    var position    = e.GetPosition(sender as Canvas ?? throw new InvalidOperationException());
                    bufPointPin.X = position.X - 2;
                    bufPointPin.Y = position.Y - 2;
                    if (elementLine.point0.Direction == EDirection.East)
                    {
                        bufPointPin.Direction = EDirection.West;
                    }
                    else
                    {
                        bufPointPin.Direction = EDirection.East;
                    }
                    DrawBufLine.ReBuild(elementLine.point0, bufPointPin);
                }

                if (element != null)
                {
                    if (data.AllowedEffects.HasFlag(DragDropEffects.Move))
                    {
                        var position = e.GetPosition(sender as Canvas ?? throw new InvalidOperationException());
                        element.oldPosition = new Point(element.Margin.Left, element.Margin.Top);
                        element.Margin      = new Thickness(Math.Max(0, position.X - element.relativeMouse.X),
                                                            Math.Max(0, position.Y - element.relativeMouse.Y), 0, 0);
                        data.Effects = DragDropEffects.Move;
                        MoveAllLine(element);
                    }

                    var i = 0;
                }
            }
        }