/// <summary>
        /// 绘制画布事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            ///鼠标位置输出
            label1.Text = "( " + poiCursor.X + ", " + poiCursor.Y + ") pixel";

            ///鼠标位置被引力场捕获,绘制引力场
            if (isGravitationCaptured != -1)
            {
                Graphics g = e.Graphics;
                if (isGravitationCaptured == madeBezierList.Count())
                {
                    ///当前是被 inputList 吸引
                    ///显示该点的引力场
                    g.DrawEllipse(new Pen(Color.Yellow), poiGravitation.X - myStatic.poi2poiDistMin, poiGravitation.Y - myStatic.poi2poiDistMin, myStatic.poi2poiDistMin * 2, myStatic.poi2poiDistMin * 2);
                    g.FillRectangle(new SolidBrush(Color.Yellow), inputPoiList[CatchID].X - 2, inputPoiList[CatchID].Y - 2, 4, 4);
                }
                else
                {
                    ///被 madeBezierList[isGravitationCaptured] 吸引
                    ///可能是被点或边捕获
                    if (CatchID < madeBezierList[isGravitationCaptured].P.poiList.Count())
                    {
                        ///被点捕获,显示点的引力场
                        g.DrawEllipse(new Pen(Color.Yellow), poiGravitation.X - myStatic.poi2poiDistMin, poiGravitation.Y - myStatic.poi2poiDistMin, myStatic.poi2poiDistMin * 2, myStatic.poi2poiDistMin * 2);
                    }
                    else
                    {
                        ///被边捕获,显示边的引力场,画一个矩形+俩圆
                        int  cou  = CatchID - madeBezierList[isGravitationCaptured].P.poiList.Count();
                        Edge edge = new Edge(madeBezierList[isGravitationCaptured].P.poiList[cou], madeBezierList[isGravitationCaptured].P.poiList[cou + 1]);
                        ///竖直的线段
                        if (edge.poi1.X == edge.poi2.X)
                        {
                            if (edge.poi1.Y > edge.poi2.Y)
                            {
                                g.DrawLine(new Pen(Color.Yellow), edge.poi1.X - myStatic.poi2edgeDistMin, edge.poi1.Y + myStatic.poi2edgeDistMin, edge.poi1.X + myStatic.poi2edgeDistMin, edge.poi1.Y + myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi1.X + myStatic.poi2edgeDistMin, edge.poi1.Y + myStatic.poi2edgeDistMin, edge.poi2.X + myStatic.poi2edgeDistMin, edge.poi2.Y - myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi2.X + myStatic.poi2edgeDistMin, edge.poi2.Y - myStatic.poi2edgeDistMin, edge.poi2.X - myStatic.poi2edgeDistMin, edge.poi2.Y - myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi2.X - myStatic.poi2edgeDistMin, edge.poi2.Y - myStatic.poi2edgeDistMin, edge.poi1.X - myStatic.poi2edgeDistMin, edge.poi1.Y + myStatic.poi2edgeDistMin);
                            }
                            else
                            {
                                g.DrawLine(new Pen(Color.Yellow), edge.poi1.X - myStatic.poi2edgeDistMin, edge.poi1.Y - myStatic.poi2edgeDistMin, edge.poi1.X + myStatic.poi2edgeDistMin, edge.poi1.Y - myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi1.X + myStatic.poi2edgeDistMin, edge.poi1.Y - myStatic.poi2edgeDistMin, edge.poi2.X + myStatic.poi2edgeDistMin, edge.poi2.Y + myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi2.X + myStatic.poi2edgeDistMin, edge.poi2.Y + myStatic.poi2edgeDistMin, edge.poi2.X - myStatic.poi2edgeDistMin, edge.poi2.Y + myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi2.X - myStatic.poi2edgeDistMin, edge.poi2.Y + myStatic.poi2edgeDistMin, edge.poi1.X - myStatic.poi2edgeDistMin, edge.poi1.Y - myStatic.poi2edgeDistMin);
                            }
                        }
                        //水平的线段
                        else if (edge.poi1.Y == edge.poi2.Y)
                        {
                            if (edge.poi1.X > edge.poi2.X)
                            {
                                g.DrawLine(new Pen(Color.Yellow), edge.poi1.X + myStatic.poi2edgeDistMin, edge.poi1.Y + myStatic.poi2edgeDistMin, edge.poi1.X + myStatic.poi2edgeDistMin, edge.poi1.Y - myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi1.X + myStatic.poi2edgeDistMin, edge.poi1.Y - myStatic.poi2edgeDistMin, edge.poi2.X - myStatic.poi2edgeDistMin, edge.poi2.Y - myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi2.X - myStatic.poi2edgeDistMin, edge.poi2.Y - myStatic.poi2edgeDistMin, edge.poi2.X - myStatic.poi2edgeDistMin, edge.poi2.Y + myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi2.X - myStatic.poi2edgeDistMin, edge.poi2.Y + myStatic.poi2edgeDistMin, edge.poi1.X + myStatic.poi2edgeDistMin, edge.poi1.Y + myStatic.poi2edgeDistMin);
                            }
                            else
                            {
                                g.DrawLine(new Pen(Color.Yellow), edge.poi1.X - myStatic.poi2edgeDistMin, edge.poi1.Y + myStatic.poi2edgeDistMin, edge.poi1.X - myStatic.poi2edgeDistMin, edge.poi1.Y - myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi1.X - myStatic.poi2edgeDistMin, edge.poi1.Y - myStatic.poi2edgeDistMin, edge.poi2.X + myStatic.poi2edgeDistMin, edge.poi2.Y - myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi2.X + myStatic.poi2edgeDistMin, edge.poi2.Y - myStatic.poi2edgeDistMin, edge.poi2.X + myStatic.poi2edgeDistMin, edge.poi2.Y + myStatic.poi2edgeDistMin);
                                g.DrawLine(new Pen(Color.Yellow), edge.poi2.X + myStatic.poi2edgeDistMin, edge.poi2.Y + myStatic.poi2edgeDistMin, edge.poi1.X - myStatic.poi2edgeDistMin, edge.poi1.Y + myStatic.poi2edgeDistMin);
                            }
                        }
                        ///倾斜的线段
                        else
                        {
                            ///边的缓冲区边界
                            g.DrawLine(new Pen(Color.Yellow, myStatic.poi2edgeDistMin * 2), edge.poi1, edge.poi2);
                            g.DrawLine(new Pen(Color.White, (myStatic.poi2edgeDistMin - 1) * 2), edge.poi1, edge.poi2);
                            ///端点的缓冲区边界
                            ///端点的缓冲区用的是边的引力大小
                            g.DrawEllipse(new Pen(Color.Yellow), edge.poi1.X - myStatic.poi2edgeDistMin, edge.poi1.Y - myStatic.poi2edgeDistMin, myStatic.poi2edgeDistMin * 2, myStatic.poi2edgeDistMin * 2);
                            g.DrawEllipse(new Pen(Color.Yellow), edge.poi2.X - myStatic.poi2edgeDistMin, edge.poi2.Y - myStatic.poi2edgeDistMin, myStatic.poi2edgeDistMin * 2, myStatic.poi2edgeDistMin * 2);
                        }
                    }
                }
            }

            ///绘制已完成贝塞尔曲线对象
            if (madeBezierList.Count() != 0)
            {
                foreach (Bezier bezier in madeBezierList)
                {
                    if (isBorderVisible)
                    {
                        bezier.P.drawMyself(e, Color.Black);
                    }
                    bezier.drawMyself(e, Color.Blue);
                }
            }

            ///绘制当前绘制中的图形
            if (!isDrawFinished)
            {
                Bezier bezierTemp = new Bezier(new Polyline(inputPoiList));
                if (isBorderVisible)
                {
                    bezierTemp.P.drawMyself(e, poiCursor);
                }
                bezierTemp.drawMyself(e, Color.Blue);
            }

            ///若有选中正在拖动,叠加显示
            if (isCheck)
            {
                Graphics g = e.Graphics;
                ///选中的是点
                ///绘制一个巨大的圆形,大小是点的引力场大小
                if (CatchID < madeBezierList[isGravitationCaptured].P.poiList.Count())
                {
                    g.FillEllipse(new SolidBrush(Color.LightGreen), madeBezierList[isGravitationCaptured].P.poiList[CatchID].X - myStatic.poi2poiDistMin, madeBezierList[isGravitationCaptured].P.poiList[CatchID].Y - myStatic.poi2poiDistMin, myStatic.poi2poiDistMin * 2, myStatic.poi2poiDistMin * 2);
                }
                ///选中边
                ///被选中的贝塞尔曲线的控制多边形变色
                else
                {
                    madeBezierList[isGravitationCaptured].P.drawMyself(e, Color.LightGreen);
                }
            }
        }