示例#1
0
文件: Tools.cs 项目: jippiedoe/Schets
 public override void whileDrawing(SketchControl s, Point p1, Point p2)
 {
     if (Math.Abs(p1.X - p2.X) > Math.Abs(p1.Y - p2.Y))
         yinyangWidth = p2.X - p1.X;
     else
         yinyangWidth = p2.Y - p1.Y;
     Action currentAction = new yinyangAction(yinyangWidth, p1, this.brush, 0);
     drawWhileDrawing(currentAction, s);
 }
示例#2
0
        void drawYinYang(yinyangAction action, Graphics gr)
        {
            if (action.width < 0)
            {
                action.startPoint = new Point(action.startPoint.X + action.width, action.startPoint.Y + action.width);
                action.width *= -1;
            }

            SolidBrush color = action.brush;
            if (color.Color == Color.White)
                color = new SolidBrush(Color.Gray);

            float middleX = action.startPoint.X + 0.5f * action.width;
            float middleY = action.startPoint.Y + 0.5f * action.width;
            int curvesSize = action.width / 2;
            int curvesDistance = action.width / 4;
            int tinyCirclesSize = action.width / 6;
            int tinyCirclesDistance = action.width / 4;

            // Left side
            gr.FillEllipse(Brushes.White, action.startPoint.X, action.startPoint.Y, action.width, action.width);
            // Boarder
            gr.DrawEllipse(new Pen(color), action.startPoint.X, action.startPoint.Y, action.width, action.width);
            // Right side
            gr.FillPie(color, action.startPoint.X, action.startPoint.Y, action.width, action.width, 270, 180);
            // Bottom curve
            gr.FillEllipse(color, middleX - curvesSize / 2, middleY - curvesDistance + curvesDistance, curvesSize, curvesSize);
            // Top curve
            gr.FillEllipse(Brushes.White, middleX - curvesSize / 2, middleY - 2 * curvesDistance, curvesSize, curvesSize);
            // Top small circle
            gr.FillEllipse(color, middleX - tinyCirclesSize / 2, middleY - tinyCirclesSize / 2 - tinyCirclesDistance, tinyCirclesSize, tinyCirclesSize);
            // Bottom small circle
            gr.FillEllipse(Brushes.White, middleX - tinyCirclesSize / 2, middleY - tinyCirclesSize / 2 + tinyCirclesDistance, tinyCirclesSize, tinyCirclesSize);
        }
示例#3
0
文件: Tools.cs 项目: jippiedoe/Schets
 public override void Complete(SketchControl s, Point p1, Point p2)
 {
     yinyangAction yinyangAction = new yinyangAction(yinyangWidth, p1, this.brush, 0);
     s.sketch.stuff.Add(yinyangAction);
     s.sketch.undo.Push(yinyangAction);
     s.sketch.redo.Clear();
 }