Esempio n. 1
0
        //DrawingVisual Approach
        public Path AsTileUsingDrawingVisual(List <SqlGeometry> geometries, List <string> labels, double mapScale, TileInfo region, double tileWidth, double tileHeight, RectangleGeometry area, Func <Point, Point> viewTransform, sb.BoundingBox totalExtent)
        {
            if (geometries == null)
            {
                return(null);
            }

            //Pen pen = new Pen(this.VisualParameters.Stroke, this.VisualParameters.StrokeThickness);

            //if (this.VisualParameters.DashStyle != null)
            //{
            //    pen.DashStyle = this.VisualParameters.DashStyle;
            //}
            var pen = this.VisualParameters.GetWpfPen();

            Brush brush = this.VisualParameters.Fill;

            var transform = MapToTileScreenWpf(totalExtent, region.WebMercatorExtent, viewTransform);

            var drawingVisual = new SqlSpatialToDrawingVisual().ParseSqlGeometry(geometries, transform, pen, brush, this.VisualParameters.PointSize, this.PointSymbol);

            RenderTargetBitmap image = new RenderTargetBitmap((int)tileWidth, (int)tileHeight, 96, 96, PixelFormats.Pbgra32);

            image.Render(drawingVisual);

            if (labels != null)
            {
                this.DrawLabels(labels, geometries, image, transform);
            }

            image.Freeze();

            Path path = new Path()
            {
                Data = area,
                Tag  = new LayerTag(mapScale)
                {
                    Layer = this, IsTiled = true, Tile = region, IsDrawn = true, IsNew = true
                }
            };

            this.Element = path;

            path.Fill = new ImageBrush(image);

            return(path);
        }
Esempio n. 2
0
        //DrawingVisual Approach
        public Path AsDrawingVisual(List <SqlGeometry> geometries, List <string> labels, double mapScale, sb.BoundingBox exactCurrentExtent, double width, double height, Func <Point, Point> mapToScreen, RectangleGeometry area)
        {
            if (geometries == null)
            {
                return(null);
            }

            //Pen pen = new Pen(this.VisualParameters.Stroke, this.VisualParameters.StrokeThickness);

            //pen.DashStyle = this.VisualParameters.DashStyle;

            var pen = this.VisualParameters.GetWpfPen();

            Brush brush = this.VisualParameters.Fill;

            DrawingVisual drawingVisual = new SqlSpatialToDrawingVisual().ParseSqlGeometry(geometries, i => mapToScreen(i), pen, brush, this.VisualParameters.PointSize, this.PointSymbol);

            RenderTargetBitmap image = new RenderTargetBitmap((int)width, (int)height, 96, 96, PixelFormats.Pbgra32);

            image.Render(drawingVisual);

            if (this.IsLabeled(mapScale))
            {
                this.DrawLabels(labels, geometries, image, mapToScreen);
            }

            image.Freeze();

            Path path = new Path()
            {
                Data = area,
                Tag  = new LayerTag(mapScale)
                {
                    Layer = this, IsTiled = false
                }
            };

            this.Element = path;

            path.Fill = new ImageBrush(image);

            return(path);
        }