コード例 #1
0
        private void DrawArea(AreaShape shape, RGBColor backgroundColor, MappingConverter converter)
        {
            if (shape.FillPattern == AreaShapeFillPattern.Fill)
            {
                Color fillOuterColor = Color.FromArgb(shape.Color.R, shape.Color.G, shape.Color.B);
                Color fillInnerColor = Color.FromArgb(backgroundColor.R, backgroundColor.G, backgroundColor.B);

                foreach (RingShape ring in shape.OuterRings)
                {
                    FillRing(ring, fillOuterColor, converter);
                }

                foreach (RingShape ring in shape.InnerRings)
                {
                    FillRing(ring, fillInnerColor, converter);
                }
            }
            else
            {
                foreach (RingShape ring in shape.OuterRings)
                {
                    DrawRing(ring, converter);
                }

                foreach (RingShape ring in shape.InnerRings)
                {
                    DrawRing(ring, converter);
                }
            }
        }
コード例 #2
0
        public AreaShape GetAreaShape(Dictionary <string, RGBColor> colorRef)
        {
            AreaShape shape = new AreaShape();

            shape.Transparency = transparencySymbol.GetTransparency();
            shape.FillPattern  = fillPatternSymbol.GetFillPattern();

            if (innerRingSymbols.Count == 0)
            {
                // it only has outer ring
                shape.OuterRings = GetRing(outerRingSymbols, colorRef);
            }
            else
            {
                // it has inner rings
                shape.OuterRings = GetRing(outerRingSymbols, colorRef);
                shape.InnerRings = GetRing(innerRingSymbols, colorRef);
            }

            shape.Color = shape.OuterRings[0].Color;
            shape.Width = shape.OuterRings[0].Width;

            return(shape);
        }
コード例 #3
0
        public Collection <DAIShape> GetDrawingShapes(Dictionary <string, RGBColor> colorRef)
        {
            Collection <DAIShape>      shapes  = new Collection <DAIShape>();
            Collection <S52BaseSymbol> symbols = new Collection <S52BaseSymbol>();

            // get all symbol values
            Collection <string> symbolValues = vectorCommands;
            int penUpIndex   = IndexOfSymbolValue(symbolValues, 0, symbolValues.Count, "PU");
            int ringEndIndex = 0;

            while (penUpIndex != -1)
            {
                int drawingIndex   = IndexOfSymbolValue(symbolValues, penUpIndex + 1, symbolValues.Count - 1, "PD", "CI", "AA");
                int ringStartIndex = IndexOfSymbolValue(symbolValues, ringEndIndex + 1, drawingIndex - 1, "PM0");

                if (ringStartIndex == -1 && drawingIndex != -1)
                {
                    PUSymbol singleSymbol = GetSingleSymbolWithWidth(symbolValues, penUpIndex, ref drawingIndex);
                    //singleSymbols.Add(singleSymbol);
                    symbols.Add(singleSymbol);
                    penUpIndex = IndexOfSymbolValue(symbolValues, drawingIndex + 1, symbolValues.Count - 1, "PU");
                }
                else if (ringStartIndex == -1 && drawingIndex == -1)
                {
                    penUpIndex = -1;
                }
                else
                {
                    ringEndIndex = IndexOfSymbolValue(symbolValues, ringStartIndex + 1, symbolValues.Count, "PM2");
                    PMSymbol areaSymbol = GetAreaSymbol(symbolValues, ref penUpIndex, drawingIndex, ringStartIndex, ringEndIndex);
                    //areaSymbols.Add(areaSymbol);
                    symbols.Add(areaSymbol);
                }
            }

            //// get shapes from area symbols
            //foreach (PMSymbol areaSymbol in areaSymbols)
            //{
            //    AreaShape areaShape = areaSymbol.GetAreaShape(colorRef);
            //    shapes.Add(areaShape);
            //}

            //// get shapes from single symbols
            //foreach (PUSymbol singleSymbol in singleSymbols)
            //{
            //    Collection<DAIShape> singleShapes = singleSymbol.GetShapes(colorRef);
            //    foreach (DAIShape shape in singleShapes)
            //    {
            //        shapes.Add(shape);
            //    }
            //}

            foreach (S52BaseSymbol symbol in symbols)
            {
                if (symbol is PUSymbol)
                {
                    Collection <DAIShape> singleShapes = (symbol as PUSymbol).GetShapes(colorRef);
                    foreach (DAIShape shape in singleShapes)
                    {
                        shapes.Add(shape);
                    }
                }
                else if (symbol is PMSymbol)
                {
                    AreaShape areaShape = (symbol as PMSymbol).GetAreaShape(colorRef);
                    shapes.Add(areaShape);
                }
            }



            return(shapes);
        }