Example #1
0
        protected override void OnDragDrop(DragEventArgs pArgs)
        {
            base.OnDragDrop(pArgs);

            // drag DrawingTool & drop.
            if (DraggingPoint != Point.Empty)
            {
                string data = pArgs.Data.GetData(typeof(string)) as string;

                data.Split(',').All(e =>
                {
                    int lIndex = Convert.ToInt32(e);
                    DrawingTool lDrawingTool = DrawingTools[lIndex];
                    Point lPoint             = GetScrollablePoint(PointToClient(new Point(pArgs.X, pArgs.Y)));

                    InvalidateRect(lDrawingTool.Tracker.SurroundingRect);
                    lDrawingTool.DoDrop(new Point(lPoint.X - DraggingPoint.X, lPoint.Y - DraggingPoint.Y));
                    InvalidateRect(lDrawingTool.Tracker.SurroundingRect);
                    SelectedTool = lDrawingTool;

                    return(true);
                });

                IsDirty = true;
            }
            else
            {
                // drag ToolboxItem & drop.
                ToolboxItem lItem = GetService <IToolboxService>().DeserializeToolboxItem(pArgs.Data);
                DrawingTool lTool = lItem.CreateComponents(DesignerHost).FirstOrDefault() as DrawingTool;

                if (lTool != null)
                {
                    lTool.CreatePersistence();
                    Point     lLocation = GetScrollablePoint(PointToClient(new Point(pArgs.X, pArgs.Y)));
                    Rectangle lRect     = lTool.SurroundingRect;

                    lLocation.Offset(-lRect.Width / 2, -lRect.Height / 2);
                    lTool.Location = lLocation;
                    AddTool(lTool);
                    SelectedTool = lTool;
                    InvalidateRect(lTool.SurroundingRect);
                }
            }
        }