Exemplo n.º 1
0
        /// <summary>
        /// 复制
        /// </summary>
        /// <returns></returns>
        public override moRenderer Clone()
        {
            moUniqueValueRenderer sRenderer = new moUniqueValueRenderer();

            sRenderer._Field     = _Field;
            sRenderer._HeadTitle = _HeadTitle;
            sRenderer._ShowHead  = _ShowHead;
            Int32 sValueCount = _Values.Count;

            for (Int32 i = 0; i <= sValueCount - 1; i++)
            {
                string   sValue  = _Values[i];
                moSymbol sSymbol = null;
                if (_Symbols[i] != null)
                {
                    sSymbol = _Symbols[i].Clone();
                }
                sRenderer.AddUniqueValue(sValue, sSymbol);
            }
            if (_DefaultSymbol != null)
            {
                sRenderer.DefaultSymbol = _DefaultSymbol.Clone();
            }
            sRenderer._ShowDefaultSymbol = _ShowDefaultSymbol;
            return(sRenderer);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 绘制所有要素
        /// </summary>
        /// <param name="g">绘图对象</param>
        /// <param name="extent">绘制范围(地图坐标)</param>
        /// <param name="mapScale">地图比例尺的倒数</param>
        /// <param name="dpm">每米对应的点数</param>
        /// <param name="mpu">地图坐标单位对应的米数</param>
        internal void DrawFeatures(Graphics g, moRectangle extent, double mapScale, double dpm, double mpu)
        {
            //(1)为所有要素配置符号
            SetFeatureSymbols();
            //(2)判断是否位于绘制范围内,如是,则绘制
            Int32 sFeatureCount = _Features.Count;

            for (Int32 i = 0; i < sFeatureCount; i++)
            {
                moFeature sFeature = _Features.GetItem(i);
                if (IsFeatureInExtent(sFeature, extent) == true)
                {
                    moGeometry sGeometry = sFeature.Geometry;
                    moSymbol   sSymbol   = sFeature.Symbol;
                    moMapDrawingTools.DrawGeometry(g, extent, mapScale, dpm, mpu, sGeometry, sSymbol);
                }
            }
        }
Exemplo n.º 3
0
        //要素的符号是否可见
        private bool IsFeatureSymbolVisible(moFeature feature)
        {
            moSymbol sSymbol = feature.Symbol;

            if (sSymbol.SymbolType == moSymbolTypeConstant.SimpleMarkerSymbol)
            {
                moSimpleMarkerSymbol sMarkerSymbol = (moSimpleMarkerSymbol)sSymbol;
                return(sMarkerSymbol.Visible);
            }
            else if (sSymbol.SymbolType == moSymbolTypeConstant.SimpleLineSymbol)
            {
                moSimpleLineSymbol sLineSymbol = (moSimpleLineSymbol)sSymbol;
                return(sLineSymbol.Visible);
            }
            else if (sSymbol.SymbolType == moSymbolTypeConstant.SimpleFillSymbol)
            {
                moSimpleFillSymbol sFillSymbol = (moSimpleFillSymbol)sSymbol;
                return(sFillSymbol.Visible);
            }
            else
            {
                throw new Exception("Invalid symbol type!");
            }
        }
Exemplo n.º 4
0
 //绘制矩形
 internal static void DrawRectangle(Graphics g, moRectangle extent, double mapScale, double dpm, double mpu, moRectangle rectangle, moSymbol symbol)
 {
     if (symbol.SymbolType == moSymbolTypeConstant.SimpleFillSymbol)
     {
         moSimpleFillSymbol sSymbol = (moSimpleFillSymbol)symbol;
         if (sSymbol.Visible == true)
         {
             DrawRectangleBySimpleFill(g, extent, mapScale, dpm, mpu, rectangle, sSymbol);
         }
     }
 }
Exemplo n.º 5
0
 //绘制点集合(多点)
 internal static void DrawPoints(Graphics g, moRectangle extent, double mapScale, double dpm, double mpu, moPoints points, moSymbol symbol)
 {
     if (symbol.SymbolType == moSymbolTypeConstant.SimpleMarkerSymbol)
     {
         moSimpleMarkerSymbol sSymbol = (moSimpleMarkerSymbol)symbol;
         if (sSymbol.Visible == true)
         {
             Int32 sPointCount = points.Count;
             for (Int32 i = 0; i <= sPointCount - 1; i++)
             {
                 moPoint sPoint = points.GetItem(i);
                 DrawPointBySimpleMarker(g, extent, mapScale, dpm, mpu, sPoint, sSymbol);
             }
         }
     }
 }
Exemplo n.º 6
0
 //绘制线段
 internal static void DrawLine(Graphics g, moRectangle extent, double mapScale, double dpm, double mpu, moPoint point1, moPoint point2, moSymbol symbol)
 {
     if (symbol.SymbolType == moSymbolTypeConstant.SimpleLineSymbol)
     {
         moSimpleLineSymbol sSymbol = (moSimpleLineSymbol)symbol;
         if (sSymbol.Visible == true)
         {
             DrawLineBySimpleLine(g, extent, mapScale, dpm, mpu, point1, point2, sSymbol);
         }
     }
 }
Exemplo n.º 7
0
 internal static void DrawGeometry(Graphics g, moRectangle extent, double mapScale, double dpm, double mpu, moGeometry geometry, moSymbol symbol)
 {
     if (extent == null)
     {
         return;
     }
     if (geometry == null)
     {
         return;
     }
     if (symbol == null)
     {
         return;
     }
     if (geometry.GetType() == typeof(moPoint))
     {
         moPoint sPoint = (moPoint)geometry;
         DrawPoint(g, extent, mapScale, dpm, mpu, sPoint, symbol);
     }
     else if (geometry.GetType() == typeof(moMultiPolyline))
     {
         moMultiPolyline sMultiPolyline = (moMultiPolyline)geometry;
         DrawMultiPolyline(g, extent, mapScale, dpm, mpu, sMultiPolyline, symbol);
     }
     else if (geometry.GetType() == typeof(moMultiPolygon))
     {
         moMultiPolygon sMultiPolygon = (moMultiPolygon)geometry;
         DrawMultiPolygon(g, extent, mapScale, dpm, mpu, sMultiPolygon, symbol);
     }
 }
Exemplo n.º 8
0
 /// <summary>
 /// 增加一个唯一值及对应的符号
 /// </summary>
 /// <param name="value"></param>
 /// <param name="symbol"></param>
 public void AddUniqueValue(string value, moSymbol symbol)
 {
     _Values.Add(value);
     _Symbols.Add(symbol);
 }
Exemplo n.º 9
0
 public void SetSymbol(Int32 index, moSymbol symbol)
 {
     _Symbols[index] = symbol;
 }
Exemplo n.º 10
0
 /// <summary>
 /// 增加一个分割值及对应的符号
 /// </summary>
 /// <param name="value"></param>
 /// <param name="symbol"></param>
 public void AddBreakValue(double value, moSymbol symbol)
 {
     _BreakValues.Add(value);
     _Symbols.Add(symbol);
 }
Exemplo n.º 11
0
 /// <summary>
 /// 以指定符号绘制指定矩形
 /// </summary>
 /// <param name="rectangle"></param>
 /// <param name="symbol"></param>
 public void DrawRectangle(moRectangle rectangle, moSymbol symbol)
 {
     moMapDrawingTools.DrawRectangle(_MyGraphics, _Extent, _MapScale, _dpm, _mpu, rectangle, symbol);
 }
Exemplo n.º 12
0
 /// <summary>
 /// 以指定符号绘制指定点集合
 /// </summary>
 /// <param name="points"></param>
 /// <param name="symbol"></param>
 public void DrawPoints(moPoints points, moSymbol symbol)
 {
     moMapDrawingTools.DrawPoints(_MyGraphics, _Extent, _MapScale, _dpm, _mpu, points, symbol);
 }
Exemplo n.º 13
0
 /// <summary>
 /// 以指定符号绘制指定复合多边形
 /// </summary>
 /// <param name="multiPolygon"></param>
 /// <param name="symbol"></param>
 public void DrawMultiPolygon(moMultiPolygon multiPolygon, moSymbol symbol)
 {
     moMapDrawingTools.DrawMultiPolygon(_MyGraphics, _Extent, _MapScale, _dpm, _mpu, multiPolygon, symbol);
 }
Exemplo n.º 14
0
 /// <summary>
 /// 以指定符号绘制指定线段
 /// </summary>
 /// <param name="point1"></param>
 /// <param name="point2"></param>
 /// <param name="symbol"></param>
 public void DrawLine(moPoint point1, moPoint point2, moSymbol symbol)
 {
     moMapDrawingTools.DrawLine(_MyGraphics, _Extent, _MapScale, _dpm, _mpu, point1, point2, symbol);
 }
Exemplo n.º 15
0
        /// <summary>
        /// 绘制所有选择要素
        /// </summary>
        /// <param name="g"></param>
        /// <param name="extent"></param>
        /// <param name="mapScale"></param>
        /// <param name="dpm"></param>
        /// <param name="mpu"></param>
        /// <param name="symbol"></param>
        internal void DrawSelectedFeatures(Graphics g, moRectangle extent, double mapScale, double dpm, double mpu, moSymbol symbol)
        {
            //判断是否位于绘制范围内,不是,则绘制
            Int32 sFeatureCount = _SelectedFeatures.Count;

            for (Int32 i = 0; i < sFeatureCount; i++)
            {
                moFeature sFeature = _SelectedFeatures.GetItem(i);
                if (IsFeatureInExtent(sFeature, extent) == true)
                {
                    moGeometry sGeometry = sFeature.Geometry;
                    moMapDrawingTools.DrawGeometry(g, extent, mapScale, dpm, mpu, sGeometry, symbol);
                }
            }
        }