コード例 #1
0
ファイル: Canvas.cs プロジェクト: sduxiaowu/NineLineScore
        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);
            /*
            if (m_commandType == eCommandType.pan)
            {
                m_panOffset.X += m_dragOffset.X;
                m_panOffset.Y += m_dragOffset.Y;
                m_dragOffset = new PointF(0, 0);
            }
            */
            moving = false;
            ispaste = false;
            List<IDrawObject> hitlist = null;
            Rectangle screenSelRect = Rectangle.Empty;
            if (m_selection != null)
            {
                screenSelRect = m_selection.ScreenRect();
                RectangleF selectionRect = m_selection.Selection(m_canvaswrapper);
                if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Eraser"))
                {
                    List<Line> l=CanvasCtrl.M_canvas.lines;
                    for (int i = l.Count-1;i>=0; i--) {
                        if (l[i].P2.X < screenSelRect.Left || l[i].P1.X > screenSelRect.Right || l[i].P1.Y > screenSelRect.Bottom ||
                            l[i].P1.Y < screenSelRect.Top)
                        {

                        }
                        else {

                            lines.RemoveAt(i);
                            
                        }
                    }
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("chance color")) {
                    List<Line> l = CanvasCtrl.M_canvas.lines;
                    for (int i = l.Count - 1; i >= 0; i--)
                    {
                        if (l[i].P2.X < screenSelRect.Left || l[i].P1.X > screenSelRect.Right || l[i].P1.Y > screenSelRect.Bottom ||
                            l[i].P1.Y < screenSelRect.Top)
                        {

                        }
                        else
                        {
                            Line l1;
                            if (lines[i].isRed)
                            {
                                 l1= new Line(lines[i].P1, lines[i].P2, 0, false);
                            }
                            else {
                                l1 = new Line(lines[i].P1, lines[i].P2, 0, true);
                            }
                            lines.RemoveAt(i);
                            lines.Add(l1);

                        }
                    }
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("move"))
                {

                    moving = true;                              //将移动状态设为正在移动
                    mr = new MovingRegion(screenSelRect);       //新建移动范围
                    List<Line> selectedLines = mr.getLines();   //选中的线
                    lastY = e.Y;                                //设置初始纵轴位置
                    lastX = e.X;                                //设置初始横轴位置
                    List<Line> l = CanvasCtrl.M_canvas.lines;
                    for (int i = l.Count - 1; i >= 0; i--)
                    {
                        if (l[i].P2.X < screenSelRect.Left || l[i].P1.X > screenSelRect.Right || l[i].P1.Y > screenSelRect.Bottom ||
                            l[i].P1.Y < screenSelRect.Top)
                        {

                        }
                        else
                        {
                            Line l1 = new Line(l[i].P1, l[i].P2, l[i].S, l[i].isRed, l[i].Color);
                            selectedLines.Add(l1);
                            lines.Remove(l[i]);
                        }
                    }
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Cut"))
                {
                                                      
                    pr = new MovingRegion(screenSelRect);       //新建移动范围
                    List<Line> selectedLines = pr.getLines();   //选中的线
                    lastY = e.Y;                                //设置初始纵轴位置
                    lastX = e.X;                                //设置初始横轴位置
                    List<Line> l = CanvasCtrl.M_canvas.lines;
                    for (int i = l.Count - 1; i >= 0; i--)
                    {
                        if (l[i].P2.X < screenSelRect.Left || l[i].P1.X > screenSelRect.Right || l[i].P1.Y > screenSelRect.Bottom ||
                            l[i].P1.Y < screenSelRect.Top)
                        {

                        }
                        else
                        {
                            Line l1 = new Line(l[i].P1, l[i].P2, l[i].S, l[i].isRed, l[i].Color);
                            selectedLines.Add(l1);
                            lines.Remove(l[i]);
                        }
                    }
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Copy"))
                {
                    
                    pr = new MovingRegion(screenSelRect);       //新建移动范围
                    List<Line> selectedLines = pr.getLines();   //选中的线
                    lastY = e.Y;                                //设置初始纵轴位置
                    lastX = e.X;                                //设置初始横轴位置
                    List<Line> l = CanvasCtrl.M_canvas.lines;
                    for (int i = l.Count - 1; i >= 0; i--)
                    {
                        if (l[i].P2.X < screenSelRect.Left || l[i].P1.X > screenSelRect.Right || l[i].P1.Y > screenSelRect.Bottom ||
                            l[i].P1.Y < screenSelRect.Top)
                        {

                        }
                        else
                        {
                            Line l1 = new Line(l[i].P1,l[i].P2,l[i].S,l[i].isRed,l[i].Color);
                         
                            selectedLines.Add(l1);
                        
                        }
                    }
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Paste"))
                {

                    ispaste = true;
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Pai")) {

                    List<Line> l = CanvasCtrl.M_canvas.orlines;
                    if(e.Y>=42&&e.Y<177)
                     l.Add(new Line(new PointF(e.X,40),new PointF(e.X,179),Color.White,5));
                    else if(e.Y>=257&&e.Y<393)
                      l.Add(new Line(new PointF(e.X,255),new PointF(e.X,395),Color.White,5));
                    else if (e.Y >= 473 && e.Y < 609)
                        l.Add(new Line(new PointF(e.X, 470), new PointF(e.X, 608), Color.White,5));
                    else if (e.Y >= 690 && e.Y < 820)
                        l.Add(new Line(new PointF(e.X, 688), new PointF(e.X, 822), Color.White,5));
                    
                    DoInvalidate(true);
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Jie"))
                {
                    List<Line> l = CanvasCtrl.M_canvas.orlines;
                    if (e.Y >= 42 && e.Y < 177)
                        l.Add(new Line(new PointF(e.X, 42), new PointF(e.X, 177), Color.Black,2));
                    else if (e.Y >= 257 && e.Y < 393)
                        l.Add(new Line(new PointF(e.X, 257), new PointF(e.X, 393), Color.Black,2));
                    else if (e.Y >= 473 && e.Y < 609)
                        l.Add(new Line(new PointF(e.X, 473), new PointF(e.X, 609), Color.Black,2));
                    else if (e.Y >= 690 && e.Y < 820)
                        l.Add(new Line(new PointF(e.X, 690), new PointF(e.X, 820), Color.Black,2));
                    DoInvalidate(true);

                }
                if (selectionRect != RectangleF.Empty)
                {
                    // is any selection rectangle. use it for selection
                    hitlist = m_model.GetHitObjects(m_canvaswrapper, selectionRect, m_selection.AnyPoint());
                    DoInvalidate(true);
                }
                else
                {
                    // else use mouse point
                    UnitPoint mousepoint = ToUnit(new PointF(e.X, e.Y));
                    hitlist = m_model.GetHitObjects(m_canvaswrapper, mousepoint);
                }
                m_selection = null;
            }
           
            if (m_commandType == eCommandType.draw && m_newObject != null)
            {
                UnitPoint mousepoint = ToUnit(m_mousedownPoint);
                if (m_snappoint != null)
                    mousepoint = m_snappoint.SnapPoint;
                m_newObject.OnMouseUp(m_canvaswrapper, mousepoint, m_snappoint);
            }
            
        }
コード例 #2
0
        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);

            /*
             * if (m_commandType == eCommandType.pan)
             * {
             *  m_panOffset.X += m_dragOffset.X;
             *  m_panOffset.Y += m_dragOffset.Y;
             *  m_dragOffset = new PointF(0, 0);
             * }
             */
            moving  = false;
            ispaste = false;
            List <IDrawObject> hitlist       = null;
            Rectangle          screenSelRect = Rectangle.Empty;

            if (m_selection != null)
            {
                screenSelRect = m_selection.ScreenRect();
                RectangleF selectionRect = m_selection.Selection(m_canvaswrapper);
                if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Eraser"))
                {
                    List <Line> l = CanvasCtrl.M_canvas.lines;
                    for (int i = l.Count - 1; i >= 0; i--)
                    {
                        if (l[i].P2.X <screenSelRect.Left || l[i].P1.X> screenSelRect.Right || l[i].P1.Y > screenSelRect.Bottom ||
                            l[i].P1.Y < screenSelRect.Top)
                        {
                        }
                        else
                        {
                            lines.RemoveAt(i);
                        }
                    }
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("chance color"))
                {
                    List <Line> l = CanvasCtrl.M_canvas.lines;
                    for (int i = l.Count - 1; i >= 0; i--)
                    {
                        if (l[i].P2.X <screenSelRect.Left || l[i].P1.X> screenSelRect.Right || l[i].P1.Y > screenSelRect.Bottom ||
                            l[i].P1.Y < screenSelRect.Top)
                        {
                        }
                        else
                        {
                            Line l1;
                            if (lines[i].isRed)
                            {
                                l1 = new Line(lines[i].P1, lines[i].P2, 0, false);
                            }
                            else
                            {
                                l1 = new Line(lines[i].P1, lines[i].P2, 0, true);
                            }
                            lines.RemoveAt(i);
                            lines.Add(l1);
                        }
                    }
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("move"))
                {
                    moving = true;                              //将移动状态设为正在移动
                    mr     = new MovingRegion(screenSelRect);   //新建移动范围
                    List <Line> selectedLines = mr.getLines();  //选中的线
                    lastY = e.Y;                                //设置初始纵轴位置
                    lastX = e.X;                                //设置初始横轴位置
                    List <Line> l = CanvasCtrl.M_canvas.lines;
                    for (int i = l.Count - 1; i >= 0; i--)
                    {
                        if (l[i].P2.X <screenSelRect.Left || l[i].P1.X> screenSelRect.Right || l[i].P1.Y > screenSelRect.Bottom ||
                            l[i].P1.Y < screenSelRect.Top)
                        {
                        }
                        else
                        {
                            Line l1 = new Line(l[i].P1, l[i].P2, l[i].S, l[i].isRed, l[i].Color);
                            selectedLines.Add(l1);
                            lines.Remove(l[i]);
                        }
                    }
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Cut"))
                {
                    pr = new MovingRegion(screenSelRect);       //新建移动范围
                    List <Line> selectedLines = pr.getLines();  //选中的线
                    lastY = e.Y;                                //设置初始纵轴位置
                    lastX = e.X;                                //设置初始横轴位置
                    List <Line> l = CanvasCtrl.M_canvas.lines;
                    for (int i = l.Count - 1; i >= 0; i--)
                    {
                        if (l[i].P2.X <screenSelRect.Left || l[i].P1.X> screenSelRect.Right || l[i].P1.Y > screenSelRect.Bottom ||
                            l[i].P1.Y < screenSelRect.Top)
                        {
                        }
                        else
                        {
                            Line l1 = new Line(l[i].P1, l[i].P2, l[i].S, l[i].isRed, l[i].Color);
                            selectedLines.Add(l1);
                            lines.Remove(l[i]);
                        }
                    }
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Copy"))
                {
                    pr = new MovingRegion(screenSelRect);       //新建移动范围
                    List <Line> selectedLines = pr.getLines();  //选中的线
                    lastY = e.Y;                                //设置初始纵轴位置
                    lastX = e.X;                                //设置初始横轴位置
                    List <Line> l = CanvasCtrl.M_canvas.lines;
                    for (int i = l.Count - 1; i >= 0; i--)
                    {
                        if (l[i].P2.X <screenSelRect.Left || l[i].P1.X> screenSelRect.Right || l[i].P1.Y > screenSelRect.Bottom ||
                            l[i].P1.Y < screenSelRect.Top)
                        {
                        }
                        else
                        {
                            Line l1 = new Line(l[i].P1, l[i].P2, l[i].S, l[i].isRed, l[i].Color);

                            selectedLines.Add(l1);
                        }
                    }
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Paste"))
                {
                    ispaste = true;
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Pai"))
                {
                    List <Line> l = CanvasCtrl.M_canvas.orlines;
                    if (e.Y >= 42 && e.Y < 177)
                    {
                        l.Add(new Line(new PointF(e.X, 40), new PointF(e.X, 179), Color.White, 5));
                    }
                    else if (e.Y >= 257 && e.Y < 393)
                    {
                        l.Add(new Line(new PointF(e.X, 255), new PointF(e.X, 395), Color.White, 5));
                    }
                    else if (e.Y >= 473 && e.Y < 609)
                    {
                        l.Add(new Line(new PointF(e.X, 470), new PointF(e.X, 608), Color.White, 5));
                    }
                    else if (e.Y >= 690 && e.Y < 820)
                    {
                        l.Add(new Line(new PointF(e.X, 688), new PointF(e.X, 822), Color.White, 5));
                    }

                    DoInvalidate(true);
                }
                else if (CanvasCtrl.M_canvas.m_drawObjectId.Equals("Jie"))
                {
                    List <Line> l = CanvasCtrl.M_canvas.orlines;
                    if (e.Y >= 42 && e.Y < 177)
                    {
                        l.Add(new Line(new PointF(e.X, 42), new PointF(e.X, 177), Color.Black, 2));
                    }
                    else if (e.Y >= 257 && e.Y < 393)
                    {
                        l.Add(new Line(new PointF(e.X, 257), new PointF(e.X, 393), Color.Black, 2));
                    }
                    else if (e.Y >= 473 && e.Y < 609)
                    {
                        l.Add(new Line(new PointF(e.X, 473), new PointF(e.X, 609), Color.Black, 2));
                    }
                    else if (e.Y >= 690 && e.Y < 820)
                    {
                        l.Add(new Line(new PointF(e.X, 690), new PointF(e.X, 820), Color.Black, 2));
                    }
                    DoInvalidate(true);
                }
                if (selectionRect != RectangleF.Empty)
                {
                    // is any selection rectangle. use it for selection
                    hitlist = m_model.GetHitObjects(m_canvaswrapper, selectionRect, m_selection.AnyPoint());
                    DoInvalidate(true);
                }
                else
                {
                    // else use mouse point
                    UnitPoint mousepoint = ToUnit(new PointF(e.X, e.Y));
                    hitlist = m_model.GetHitObjects(m_canvaswrapper, mousepoint);
                }
                m_selection = null;
            }

            if (m_commandType == eCommandType.draw && m_newObject != null)
            {
                UnitPoint mousepoint = ToUnit(m_mousedownPoint);
                if (m_snappoint != null)
                {
                    mousepoint = m_snappoint.SnapPoint;
                }
                m_newObject.OnMouseUp(m_canvaswrapper, mousepoint, m_snappoint);
            }
        }
コード例 #3
0
ファイル: Canvas.cs プロジェクト: sduxiaowu/NineLineScore
        protected override void OnMouseDown(MouseEventArgs e)
        {
            m_mousedownPoint = new PointF(e.X, e.Y); // used when panning
            m_dragOffset = new PointF(0, 0);

            //移动音符放下
            if (moving)
            {
                moving = false;
                lines.AddRange(mr.getLines());
            }
            if (ispaste)
            {
                ispaste = false;
                List<Line> l=pr.getLines();
                for (int i = 0; i <l.Count; i++) {
                    Line l1 = new Line(l[i].P1, l[i].P2, l[i].S, l[i].isRed, l[i].Color);
                    lines.Add(l1);
                }
                  
            }
            if (m_drawObjectId.Equals("StartPoint")) {

                TestForm.setStartPoint(e.X,e.Y);
            }
            UnitPoint mousepoint = ToUnit(m_mousedownPoint);
            if (m_snappoint != null)
                mousepoint = m_snappoint.SnapPoint;

            if (m_commandType == eCommandType.select)
            {
                bool handled = false;
                if (m_nodeMoveHelper.HandleMouseDown(mousepoint, ref handled))
                {
                    m_commandType = eCommandType.editNode;
                    m_snappoint = null;
                    base.OnMouseDown(e);
                    return;
                }
                m_selection = new SelectionRectangle(m_mousedownPoint);
            }
            /*
            if (m_commandType == eCommandType.move)
            {
                m_moveHelper.HandleMouseDownForMove(mousepoint, m_snappoint);
            }
             * */
            if (m_commandType == eCommandType.draw)
            {
                HandleMouseDownWhenDrawing(mousepoint, null);
                DoInvalidate(true);
            }

            else if (m_commandType == eCommandType.symbol) {
                System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TestForm));
                CanvasWrapper canvastest = new CanvasWrapper(this, Graphics.FromImage(m_staticImage), ClientRectangle);
                canvastest.Graphics.SmoothingMode = m_smoothingMode;
                if (m_drawObjectId == "clef1" || m_drawObjectId == "clef2" || m_drawObjectId == "clef3" || m_drawObjectId == "clef4" || m_drawObjectId == "clef6" || m_drawObjectId == "N2"
                    || m_drawObjectId == "N3" || m_drawObjectId == "N4" || m_drawObjectId == "N5" || m_drawObjectId == "N6" || m_drawObjectId == "N7" || m_drawObjectId == "N8" || m_drawObjectId == "N9"
                    || m_drawObjectId == "N10" || m_drawObjectId == "N11" || m_drawObjectId == "N12" || m_drawObjectId == "s10" || m_drawObjectId == "s11" || m_drawObjectId == "s12" ||
                    m_drawObjectId == "N12" || m_drawObjectId == "N13" )
                {
                  //  MessageBox.Show("test  test " + m_drawObjectId);

                    DrawSymbol(canvastest, e.X, e.Y, ((System.Drawing.Image)(resources.GetObject("ribbonButton_" + m_drawObjectId + ".Image"))), 1);
                }
                else if (m_drawObjectId == "bm1" || m_drawObjectId == "bm2" || m_drawObjectId == "bm3" || m_drawObjectId == "bm4"
                   || m_drawObjectId == "bm5" || m_drawObjectId == "bm6" || m_drawObjectId == "bm7" || m_drawObjectId == "bm8" ||
                    m_drawObjectId == "bm18" || m_drawObjectId == "o11")
                {
                    DrawSymbol(canvastest, e.X, e.Y, ((System.Drawing.Image)(resources.GetObject("ribbonButton_" + m_drawObjectId + ".Image"))), 0.7);

                }
                else
                {
                    //  MessageBox.Show("test  test " + m_drawObjectId);
                    DrawSymbol(canvastest, e.X, e.Y, ((System.Drawing.Image)(resources.GetObject("ribbonButton_" + m_drawObjectId + ".Image"))), 0.4);
                }
                canvastest.CanvasCtrl.Refresh();
                
            }
            /*
            if (m_commandType == eCommandType.edit)
            {
                if (m_editTool == null)
                    m_editTool = m_model.GetEditTool(m_editToolId);
                if (m_editTool != null)
                {
                    if (m_editTool.SupportSelection)
                        m_selection = new SelectionRectangle(m_mousedownPoint);

                    eDrawObjectMouseDown mouseresult = m_editTool.OnMouseDown(m_canvaswrapper, mousepoint, m_snappoint);
//                    /*
//                    if (mouseresult == eDrawObjectMouseDown.Continue)
//                    {
//                        if (m_editTool.SupportSelection)
//                            m_selection = new SelectionRectangle(m_mousedownPoint);
//                    }
//                     * * /
//
                    if (mouseresult == eDrawObjectMouseDown.Done)
                    {
                        m_editTool.Finished();
                        m_editTool = m_model.GetEditTool(m_editToolId); // continue with new tool
                        //m_editTool = null;

                        if (m_editTool.SupportSelection)
                            m_selection = new SelectionRectangle(m_mousedownPoint);
                    }
                }
                DoInvalidate(true);
                UpdateCursor();
            }
           */
            base.OnMouseDown(e);
        }
コード例 #4
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            m_mousedownPoint = new PointF(e.X, e.Y); // used when panning
            m_dragOffset     = new PointF(0, 0);

            //移动音符放下
            if (moving)
            {
                moving = false;
                lines.AddRange(mr.getLines());
            }
            if (ispaste)
            {
                ispaste = false;
                List <Line> l = pr.getLines();
                for (int i = 0; i < l.Count; i++)
                {
                    Line l1 = new Line(l[i].P1, l[i].P2, l[i].S, l[i].isRed, l[i].Color);
                    lines.Add(l1);
                }
            }
            if (m_drawObjectId.Equals("StartPoint"))
            {
                TestForm.setStartPoint(e.X, e.Y);
            }
            UnitPoint mousepoint = ToUnit(m_mousedownPoint);

            if (m_snappoint != null)
            {
                mousepoint = m_snappoint.SnapPoint;
            }

            if (m_commandType == eCommandType.select)
            {
                bool handled = false;
                if (m_nodeMoveHelper.HandleMouseDown(mousepoint, ref handled))
                {
                    m_commandType = eCommandType.editNode;
                    m_snappoint   = null;
                    base.OnMouseDown(e);
                    return;
                }
                m_selection = new SelectionRectangle(m_mousedownPoint);
            }

            /*
             * if (m_commandType == eCommandType.move)
             * {
             *  m_moveHelper.HandleMouseDownForMove(mousepoint, m_snappoint);
             * }
             * */
            if (m_commandType == eCommandType.draw)
            {
                HandleMouseDownWhenDrawing(mousepoint, null);
                DoInvalidate(true);
            }

            else if (m_commandType == eCommandType.symbol)
            {
                System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TestForm));
                CanvasWrapper canvastest = new CanvasWrapper(this, Graphics.FromImage(m_staticImage), ClientRectangle);
                canvastest.Graphics.SmoothingMode = m_smoothingMode;
                if (m_drawObjectId == "clef1" || m_drawObjectId == "clef2" || m_drawObjectId == "clef3" || m_drawObjectId == "clef4" || m_drawObjectId == "clef6" || m_drawObjectId == "N2" ||
                    m_drawObjectId == "N3" || m_drawObjectId == "N4" || m_drawObjectId == "N5" || m_drawObjectId == "N6" || m_drawObjectId == "N7" || m_drawObjectId == "N8" || m_drawObjectId == "N9" ||
                    m_drawObjectId == "N10" || m_drawObjectId == "N11" || m_drawObjectId == "N12" || m_drawObjectId == "s10" || m_drawObjectId == "s11" || m_drawObjectId == "s12" ||
                    m_drawObjectId == "N12" || m_drawObjectId == "N13")
                {
                    //  MessageBox.Show("test  test " + m_drawObjectId);

                    DrawSymbol(canvastest, e.X, e.Y, ((System.Drawing.Image)(resources.GetObject("ribbonButton_" + m_drawObjectId + ".Image"))), 1);
                }
                else if (m_drawObjectId == "bm1" || m_drawObjectId == "bm2" || m_drawObjectId == "bm3" || m_drawObjectId == "bm4" ||
                         m_drawObjectId == "bm5" || m_drawObjectId == "bm6" || m_drawObjectId == "bm7" || m_drawObjectId == "bm8" ||
                         m_drawObjectId == "bm18" || m_drawObjectId == "o11")
                {
                    DrawSymbol(canvastest, e.X, e.Y, ((System.Drawing.Image)(resources.GetObject("ribbonButton_" + m_drawObjectId + ".Image"))), 0.7);
                }
                else
                {
                    //  MessageBox.Show("test  test " + m_drawObjectId);
                    DrawSymbol(canvastest, e.X, e.Y, ((System.Drawing.Image)(resources.GetObject("ribbonButton_" + m_drawObjectId + ".Image"))), 0.4);
                }
                canvastest.CanvasCtrl.Refresh();
            }

            /*
             * if (m_commandType == eCommandType.edit)
             * {
             *  if (m_editTool == null)
             *      m_editTool = m_model.GetEditTool(m_editToolId);
             *  if (m_editTool != null)
             *  {
             *      if (m_editTool.SupportSelection)
             *          m_selection = new SelectionRectangle(m_mousedownPoint);
             *
             *      eDrawObjectMouseDown mouseresult = m_editTool.OnMouseDown(m_canvaswrapper, mousepoint, m_snappoint);
             * //                    /*
             * //                    if (mouseresult == eDrawObjectMouseDown.Continue)
             * //                    {
             * //                        if (m_editTool.SupportSelection)
             * //                            m_selection = new SelectionRectangle(m_mousedownPoint);
             * //                    }
             * //                     * * /
             * //
             *      if (mouseresult == eDrawObjectMouseDown.Done)
             *      {
             *          m_editTool.Finished();
             *          m_editTool = m_model.GetEditTool(m_editToolId); // continue with new tool
             *          //m_editTool = null;
             *
             *          if (m_editTool.SupportSelection)
             *              m_selection = new SelectionRectangle(m_mousedownPoint);
             *      }
             *  }
             *  DoInvalidate(true);
             *  UpdateCursor();
             * }
             */
            base.OnMouseDown(e);
        }