private void cboPlacement_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (MyMap == null)
            {
                return;
            }

            ArcGISDynamicMapServiceLayer dynamicLayer =
                MyMap.Layers["PopulationDynamicLayer"] as ArcGISDynamicMapServiceLayer;
            LabelPlacement placment = new LabelPlacement();

            switch (cboPlacement.SelectedIndex)
            {
            case 0:
                placment = LabelPlacement.PointLabelPlacementAboveCenter;
                break;

            case 1:
                placment = LabelPlacement.PointLabelPlacementAboveLeft;
                break;

            case 2:
                placment = LabelPlacement.PointLabelPlacementAboveRight;
                break;

            case 3:
                placment = LabelPlacement.PointLabelPlacementBelowCenter;
                break;

            case 4:
                placment = LabelPlacement.PointLabelPlacementBelowLeft;
                break;

            case 5:
                placment = LabelPlacement.PointLabelPlacementBelowRight;
                break;

            case 6:
                placment = LabelPlacement.PointLabelPlacementCenterCenter;
                break;

            case 7:
                placment = LabelPlacement.PointLabelPlacementCenterLeft;
                break;

            case 8:
                placment = LabelPlacement.PointLabelPlacementCenterRight;
                break;
            }

            foreach (LabelClass lClass in dynamicLayer.LayerDrawingOptions[0].LabelClasses)
            {
                lClass.LabelPlacement = placment;
            }

            dynamicLayer.Refresh();
        }
コード例 #2
0
        internal static void GenerateVisibleLabels(ChartAxis axis, LabelPlacement labelPlacement)
        {
            {
                var actualSeries =
                    axis.Area.VisibleSeries
                    .Where(series => series.ActualXAxis == axis)
                    .Max(filteredSeries => filteredSeries.DataCount);

                actualSeries = actualSeries != null ? actualSeries : axis.Area is SfChart ? (axis.Area as SfChart).TechnicalIndicators.Where(series => series.ActualXAxis == axis)
                               .Max(filteredSeries => filteredSeries.DataCount) : null;

                if (actualSeries == null)
                {
                    return;
                }
                var    visibleRange       = axis.VisibleRange;
                double actualInterval     = axis.ActualInterval;
                double interval           = axis.VisibleInterval;
                double position           = visibleRange.Start - (visibleRange.Start % actualInterval);
                int    count              = 0;
                var    isPolarRadarSeries = actualSeries is PolarRadarSeriesBase;
                var    isIndexed          = (actualSeries is WaterfallSeries || actualSeries is HistogramSeries ||
                                             actualSeries is ErrorBarSeries || isPolarRadarSeries) ?
                                            true : (axis as CategoryAxis).IsIndexed;
                count = isIndexed ? actualSeries.DataCount : actualSeries.DistinctValuesIndexes.Count;
                for (; position <= visibleRange.End; position += interval)
                {
                    int pos = ((int)Math.Round(position));
                    if (visibleRange.Inside(pos) && pos < count && pos > -1)
                    {
                        object obj = null;
                        obj = GetLabelContent(axis, pos, actualSeries);
                        axis.VisibleLabels.Add(new ChartAxisLabel(pos, obj, pos));
                    }
                }

                position = visibleRange.Start - (visibleRange.Start % actualInterval);
                if (isPolarRadarSeries)
                {
                    return;
                }
                for (; position <= visibleRange.End; position += 1)
                {
                    if (labelPlacement != LabelPlacement.BetweenTicks)
                    {
                        continue;
                    }
                    if (position == 0 && (axis.VisibleRange.Inside(-0.5)))
                    {
                        axis.m_smalltickPoints.Add(-0.5);
                    }

                    AddBetweenTicks(axis, position, 1d);
                }
            }
        }
コード例 #3
0
 public static Point GetLabelOffset(LabelPlacement placement)
 {
     switch (placement) {
         case LabelPlacement.Top:
             return new Point(0, 0.5);
         case LabelPlacement.Bottom:
             return new Point(0, -0.5);
         case LabelPlacement.Left:
             return new Point(-0.5, 0);
         default:
             return new Point(0.5, 0);
     }
 }
コード例 #4
0
        /**
         * Constructs a new DatabaseRenderer.
         *
         * @param mapDatabase
         *            the MapDatabase from which the map data will be read.
         */
        public DatabaseRenderer(MapDatabase mapDatabase)
        {
            this.mapDatabase    = mapDatabase;
            this.canvasRasterer = new CanvasRasterer();
            this.labelPlacement = new LabelPlacement();

            this.ways         = new List <List <List <ShapePaintContainer> > >(LAYERS);
            this.wayNames     = new List <WayTextContainer>(64);
            this.nodes        = new List <pointTextContainer>(64);
            this.areaLabels   = new List <pointTextContainer>(64);
            this.waySymbols   = new List <SymbolContainer>(64);
            this.Pointsymbols = new List <SymbolContainer>(64);

            PAINT_WATER_TILE_HIGHTLIGHT.Style = Style.FILL;
            PAINT_WATER_TILE_HIGHTLIGHT.Color = Colors.Cyan;
        }
コード例 #5
0
        public static Point GetLabelOffset(LabelPlacement placement)
        {
            switch (placement)
            {
            case LabelPlacement.Top:
                return(new Point(0, 0.5));

            case LabelPlacement.Bottom:
                return(new Point(0, -0.5));

            case LabelPlacement.Left:
                return(new Point(-0.5, 0));

            default:
                return(new Point(0.5, 0));
            }
        }
        private void cboPlacement_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (MyMap == null) return;

            ArcGISDynamicMapServiceLayer dynamicLayer =
                MyMap.Layers["PopulationDynamicLayer"] as ArcGISDynamicMapServiceLayer;
            LabelPlacement placment = new LabelPlacement();

            switch (cboPlacement.SelectedIndex)
            {
                case 0:
                    placment = LabelPlacement.PointLabelPlacementAboveCenter;
                    break;
                case 1:
                    placment = LabelPlacement.PointLabelPlacementAboveLeft;
                    break;
                case 2:
                    placment = LabelPlacement.PointLabelPlacementAboveRight;
                    break;
                case 3:
                    placment = LabelPlacement.PointLabelPlacementBelowCenter;
                    break;
                case 4:
                    placment = LabelPlacement.PointLabelPlacementBelowLeft;
                    break;
                case 5:
                    placment = LabelPlacement.PointLabelPlacementBelowRight;
                    break;
                case 6:
                    placment = LabelPlacement.PointLabelPlacementCenterCenter;
                    break;
                case 7:
                    placment = LabelPlacement.PointLabelPlacementCenterLeft;
                    break;
                case 8:
                    placment = LabelPlacement.PointLabelPlacementCenterRight;
                    break;
            }

            foreach (LabelClass lClass in dynamicLayer.LayerDrawingOptions[0].LabelClasses)
            {
                lClass.LabelPlacement = placment;
            }

            dynamicLayer.Refresh();
        }
コード例 #7
0
        /// <summary>
        /// Apply padding based on interval
        /// </summary>
        /// <param name="axis"></param>
        /// <param name="range"></param>
        /// <param name="interval"></param>
        /// <param name="labelPlacement"></param>
        /// <returns></returns>
        internal static DoubleRange ApplyRangePadding(ChartAxis axis, DoubleRange range, double interval, LabelPlacement labelPlacement)
        {
            var actualSeries =
                axis.Area.VisibleSeries
                .Where(series => series.ActualXAxis == axis)
                .Max(filteredSeries => filteredSeries.DataCount);

            if (!(actualSeries is PolarRadarSeriesBase) && labelPlacement == LabelPlacement.BetweenTicks)
            {
                return(new DoubleRange(-0.5, (int)range.End + 0.5));
            }

            return(range);
        }