public void Draw(CanvasDrawingSession drawingSession)
        {
            Matrix3x2 matrix = this.ViewModel.CanvasTransformer.GetMatrix();

            //@DrawBound
            switch (this.SelectionViewModel.SelectionMode)
            {
            case ListViewSelectionMode.None: break;

            case ListViewSelectionMode.Single:
                ILayer layer2 = this.SelectionViewModel.SelectionLayerage.Self;

                if (layer2.Type == LayerType.Curve)
                {
                    drawingSession.DrawLayerBound(layer2, matrix, this.ViewModel.AccentColor);
                    drawingSession.DrawNodeCollection(layer2.Nodes, matrix, this.ViewModel.AccentColor);
                }
                break;

            case ListViewSelectionMode.Multiple:
                foreach (Layerage layerage in this.SelectionViewModel.SelectionLayerages)
                {
                    ILayer layer = layerage.Self;

                    if (layer.Type == LayerType.Curve)
                    {
                        drawingSession.DrawLayerBound(layer, matrix, this.ViewModel.AccentColor);
                        drawingSession.DrawNodeCollection(layer.Nodes, matrix, this.ViewModel.AccentColor);
                    }
                }
                break;
            }

            switch (this.NodeCollectionMode)
            {
            case NodeCollectionMode.Move:
            case NodeCollectionMode.MoveSingleNodePoint:
            {
                //Snapping
                if (this.IsSnap)
                {
                    this.Snap.Draw(drawingSession, matrix);
                    this.Snap.DrawNode2(drawingSession, matrix);
                }
            }
            break;

            case NodeCollectionMode.RectChoose:
            {
                CanvasGeometry canvasGeometry          = this.TransformerRect.ToRectangle(this.ViewModel.CanvasDevice);
                CanvasGeometry canvasGeometryTransform = canvasGeometry.Transform(matrix);
                drawingSession.DrawGeometryDodgerBlue(canvasGeometryTransform);
            }
            break;
            }
        }
        public void Draw(CanvasDrawingSession drawingSession)
        {
            Matrix3x2 matrix = this.ViewModel.CanvasTransformer.GetMatrix();

            //@DrawBound
            switch (this.SelectionViewModel.SelectionMode)
            {
            case ListViewSelectionMode.None:
                break;

            case ListViewSelectionMode.Single:
                ILayer layer2 = this.SelectionViewModel.SelectionLayerage.Self;
                drawingSession.DrawLayerBound(layer2, matrix, this.ViewModel.AccentColor);

                ToolBase.TransformerTool.Draw(drawingSession);     //TransformerTool
                break;

            case ListViewSelectionMode.Multiple:
                foreach (Layerage layerage in this.ViewModel.SelectionLayerages)
                {
                    ILayer layer = layerage.Self;
                    drawingSession.DrawLayerBound(layer, matrix, this.ViewModel.AccentColor);
                }

                ToolBase.TransformerTool.Draw(drawingSession);     //TransformerTool
                break;
            }


            switch (this.CursorMode)
            {
            case CursorMode.None:
            case CursorMode.Transformer:
                ToolBase.TransformerTool.Draw(drawingSession);    //TransformerTool
                break;

            case CursorMode.Move:
                ToolBase.MoveTool.Draw(drawingSession);    //MoveTool
                break;

            case CursorMode.BoxChoose:
                CanvasGeometry geometry = this.BoxRect.ToRectangle(this.ViewModel.CanvasDevice, matrix);
                drawingSession.DrawGeometryDodgerBlue(geometry);
                break;
            }
        }