Exemplo n.º 1
0
        /// <summary>
        /// Draws a line on the target. The coordinates given are scene coordinates.
        /// </summary>
        /// <param name="target"></param>
        /// <param name="x">The x coordinate.</param>
        /// <param name="y">The y coordinate.</param>
        /// <param name="color">Color.</param>
        /// <param name="width">Width.</param>
        /// <param name="lineJoin"></param>
        /// <param name="dashes"></param>
        protected override void DrawLine(Target2DWrapper <Graphics> target, double[] x, double[] y, int color, double width,
                                         OsmSharp.UI.Renderer.Scene.Scene2DPrimitives.LineJoin lineJoin, int[] dashes)
        {
            float widthInPixels = this.ToPixels(width);

            _pen.DashStyle = DashStyle.Solid;
            if (dashes != null)
            {
                var penDashes = new float[dashes.Length];
                for (int idx = 0; idx < dashes.Length; idx++)
                {
                    penDashes[idx] = dashes[idx];
                }
                _pen.DashPattern = penDashes;
                _pen.DashStyle   = DashStyle.Custom;
            }
            switch (lineJoin)
            {
            case OsmSharp.UI.Renderer.Scene.Scene2DPrimitives.LineJoin.Round:
                _pen.LineJoin = System.Drawing.Drawing2D.LineJoin.Round;
                break;

            case OsmSharp.UI.Renderer.Scene.Scene2DPrimitives.LineJoin.Miter:
                _pen.LineJoin = System.Drawing.Drawing2D.LineJoin.Miter;
                break;

            case OsmSharp.UI.Renderer.Scene.Scene2DPrimitives.LineJoin.Bevel:
                _pen.LineJoin = System.Drawing.Drawing2D.LineJoin.Bevel;
                break;

            case OsmSharp.UI.Renderer.Scene.Scene2DPrimitives.LineJoin.None:
                // just keep the default.
                _pen.LineJoin = System.Drawing.Drawing2D.LineJoin.Round;
                break;

            default:
                throw new ArgumentOutOfRangeException("lineJoin");
            }
            _pen.StartCap = LineCap.Round;
            _pen.EndCap   = LineCap.Round;
            var points = new PointF[x.Length];

            for (int idx = 0; idx < x.Length; idx++)
            {
                double[] transformed = this.Tranform(x[idx], y[idx]);
                points[idx] = new PointF((float)transformed[0], (float)transformed[1]);
            }
            //if (casingWidth > 0)
            //{ // draw casing.
            //    _pen.Color = Color.FromArgb(casingColor);
            //    _pen.Width = this.ToPixels(casingWidth + width);
            //    target.Target.DrawLines(_pen, points);
            //}
            // set color/width.
            _pen.Color = Color.FromArgb(color);
            _pen.Width = this.ToPixels(width);
            target.Target.DrawLines(_pen, points);
        }
 protected override void DrawLine(Target2DWrapper <GraphicsDevice> target, double[] x, double[] y, int color, double width, OsmSharp.UI.Renderer.Scene.Scene2DPrimitives.LineJoin lineJoin, int[] dashes)
 {
     throw new NotImplementedException();
 }