예제 #1
0
        /// <summary>
        /// 绘制内容到笔画
        /// </summary>
        /// <param name="Cmd"></param>
        /// <param name="isDown"></param>
        public void Handle(IPainterCmd Cmd, bool isDown = true)
        {
            if (!Cmd.CouldHandle)
            {
                return;
            }
            switch (Cmd.Type)
            {
            case PaintType.Rectangle:
                var tpdr = Cmd as PCmdData_2p;
                glyph.Clear(Color.Transparent);
                PrintCmd = g =>
                           g.DrawRectangle(tpdr.Pen, getRectangle(tpdr.Start, tpdr.End));
                break;

            case PaintType.Ellipse:
                var tpdc = Cmd as PCmdData_2p;
                glyph.Clear(Color.Transparent);
                PrintCmd = g => g.DrawEllipse(tpdc.Pen, getRectangleF(tpdc.Start, tpdc.End));
                break;

            case PaintType.Arrow:
                var tpda = Cmd as PCmdData_2p;
                glyph.Clear(Color.Transparent);
                PrintCmd = g => g.DrawLine(tpda.Pen, tpda.Start, tpda.End);
                break;

            case PaintType.StraightLine:
                var tpds = Cmd as PCmdData_2p;
                glyph.Clear(Color.Transparent);
                PrintCmd = g => g.DrawLine(tpds.Pen, tpds.Start, tpds.End);
                break;

            case PaintType.Dashed:
                tpds = Cmd as PCmdData_2p;
                glyph.Clear(Color.Transparent);
                PrintCmd = g => g.DrawLine(tpds.Pen, tpds.Start, tpds.End);
                break;

            case PaintType.Lines:
                var tpdls = Cmd as PCmdData_Lines;
                glyph.Clear(Color.Transparent);
                PrintCmd = g => g.DrawCurve(tpdls.Pen, tpdls.Points);
                break;

            default:
                throw new Exception("error.." + Cmd.Type);
            }
            PrintCmd(glyph);
            glyph.Flush();
        }
예제 #2
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="graphics"></param>
    /// <param name="cmd"></param>
    public static void Draw(this Graphics graphics, IPainterCmd cmd)
    {
        switch (cmd.Type)
        {
        case PaintType.Rectangle:
            //var rectData = cmd as
            break;

        case PaintType.Ellipse:
            break;

        case PaintType.Arrow:
            break;

        case PaintType.StraightLine:
            break;

        case PaintType.Dashed:
            var dashedData = cmd as PCmdData_Dashed;
            //var length = dashedData.Length;
            //int caps = (int)(length / 20) + 1;
            //var delta = getDelta(dashedData.Start, dashedData.End, length);
            //var deltaSizex15 = new SizeF(delta.X * 15, delta.Y * 15);
            //var deltaSizex20 = new SizeF(delta.X * 20, delta.Y * 20);
            //for (int i = 0; i < caps; i++)
            //    graphics.DrawLine(dashedData.Pen, dashedData.Start, dashedData.Start + deltaSizex15, deltaSizex20.Multiple(i));

            var pen = dashedData.Pen;
            pen.DashOffset = 15;
            pen.DashStyle  = System.Drawing.Drawing2D.DashStyle.Dot;
            graphics.DrawLine(pen, dashedData.Start, dashedData.End);
            break;

        case PaintType.Lines:
            var linesData = cmd as PCmdData_Lines;
            graphics.DrawLines(cmd.Pen, linesData.Points);
            break;

        default:
            break;
        }
    }