You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							1719 lines
						
					
					
						
							79 KiB
						
					
					
				
			
		
		
	
	
							1719 lines
						
					
					
						
							79 KiB
						
					
					
				using System; | 
						|
using System.Collections.Generic; | 
						|
using System.Text; | 
						|
using Kingo.Framework.LayerStyleConvert.XSDClass; | 
						|
using System.Drawing; | 
						|
using ESRI.ArcGIS.Carto; | 
						|
using ESRI.ArcGIS.Display; | 
						|
 | 
						|
 | 
						|
namespace Kingo.Framework.LayerStyleConvert.Common | 
						|
{ | 
						|
    public class SymbolConvert | 
						|
    { | 
						|
        public int hdc = 0; | 
						|
        private static SymbolConvert _instance = null; | 
						|
        static object lockObj = new object(); | 
						|
        public static SymbolConvert Instance() | 
						|
        { | 
						|
            lock (lockObj) | 
						|
            { | 
						|
                if (_instance == null) | 
						|
                    _instance = new SymbolConvert(); | 
						|
            } | 
						|
            return _instance; | 
						|
        } | 
						|
 | 
						|
        public Renderer GetRenderer(ESRI.ArcGIS.Carto.IFeatureRenderer renderer) | 
						|
        { | 
						|
            Renderer customRenderer = null; | 
						|
            if (renderer is ISimpleRenderer) | 
						|
            { | 
						|
                customRenderer = GetSimpleRenderer(renderer as ISimpleRenderer); | 
						|
            } | 
						|
            else if (renderer is IUniqueValueRenderer) | 
						|
            { | 
						|
                customRenderer = GetUniqueValueRenderer(renderer as IUniqueValueRenderer); | 
						|
            } | 
						|
            return customRenderer; | 
						|
        } | 
						|
 | 
						|
        public Renderer GetSimpleRenderer(ISimpleRenderer esriSimpleRenderer) | 
						|
        { | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.SimpleRenderer customRenderer = new Kingo.Framework.LayerStyleConvert.XSDClass.SimpleRenderer(); | 
						|
            customRenderer.Symbol = GetSymbol(esriSimpleRenderer.Symbol); | 
						|
            customRenderer.Label = esriSimpleRenderer.Label; | 
						|
            customRenderer.Description = esriSimpleRenderer.Description; | 
						|
            return customRenderer; | 
						|
        } | 
						|
 | 
						|
        public Renderer GetUniqueValueRenderer(IUniqueValueRenderer esriUniqueValueRenderer) | 
						|
        { | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.UniqueValueRenderer customRenderer = new Kingo.Framework.LayerStyleConvert.XSDClass.UniqueValueRenderer(); | 
						|
            customRenderer.DefaultSymbol = GetSymbol(esriUniqueValueRenderer.DefaultSymbol); | 
						|
            customRenderer.DefaultLabel = esriUniqueValueRenderer.DefaultLabel; | 
						|
            customRenderer.Field1 = esriUniqueValueRenderer.get_Field(0); | 
						|
            if (esriUniqueValueRenderer.FieldCount == 2) | 
						|
                customRenderer.Field2 = esriUniqueValueRenderer.get_Field(1); | 
						|
            if (esriUniqueValueRenderer.FieldCount == 3) | 
						|
                customRenderer.Field3 = esriUniqueValueRenderer.get_Field(2); | 
						|
            customRenderer.FieldDelimiter = esriUniqueValueRenderer.FieldDelimiter; | 
						|
 | 
						|
            List< Kingo.Framework.LayerStyleConvert.XSDClass.UniqueValueInfo> lstUniqueValueInfo = new List<Kingo.Framework.LayerStyleConvert.XSDClass.UniqueValueInfo>(); | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.UniqueValueInfo unqiueInfo = null; | 
						|
            for (int i = 0; i < esriUniqueValueRenderer.ValueCount; i++) | 
						|
            { | 
						|
                unqiueInfo = new Kingo.Framework.LayerStyleConvert.XSDClass.UniqueValueInfo(); | 
						|
                unqiueInfo.Value = esriUniqueValueRenderer.get_Value(i); | 
						|
                unqiueInfo.Label = esriUniqueValueRenderer.get_Label(unqiueInfo.Value); | 
						|
                unqiueInfo.Description = esriUniqueValueRenderer.get_Description(unqiueInfo.Value); | 
						|
                //unqiueInfo.Symbol = GetSymbol(esriUniqueValueRenderer.get_Symbol(unqiueInfo.Value)); | 
						|
                unqiueInfo.Symbol = GetUniqueSymbol(esriUniqueValueRenderer.get_Symbol(unqiueInfo.Value)); | 
						|
                lstUniqueValueInfo.Add(unqiueInfo); | 
						|
            } | 
						|
            customRenderer.UniqueValueInfos = lstUniqueValueInfo; | 
						|
            return customRenderer; | 
						|
        } | 
						|
 | 
						|
 | 
						|
 | 
						|
        /// <summary> | 
						|
        /// ESRI样式转为自定义样式 | 
						|
        /// </summary> | 
						|
        /// <param name="symbol"></param> | 
						|
        /// <returns></returns> | 
						|
        public Kingo.Framework.LayerStyleConvert.XSDClass.Symbol GetSymbol(ESRI.ArcGIS.Display.ISymbol symbol) | 
						|
        { | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.Symbol symbolCustom = null; | 
						|
            try | 
						|
            { | 
						|
                if (symbol == null) return null; | 
						|
                //面 | 
						|
                if (symbol is IFillSymbol) | 
						|
                { | 
						|
                    symbolCustom = EsriFillSymbolToCustomSymbol(symbol as IFillSymbol); | 
						|
                } | 
						|
                //线 | 
						|
                else if (symbol is ILineSymbol) | 
						|
                { | 
						|
                    symbolCustom = EsriLSymbolToCustomLineSymbol(symbol as ILineSymbol); | 
						|
                } | 
						|
                //点 | 
						|
                else if (symbol is IMarkerSymbol) | 
						|
                { | 
						|
                    symbolCustom = EsriMarkerSymbolToCustomMSymbol(symbol as IMarkerSymbol); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("ESRI样式转为自定义样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return symbolCustom; | 
						|
        } | 
						|
 | 
						|
        private Bitmap PreViewMarkerSymbol(ISymbol pSymbol, int width, int height) | 
						|
        { | 
						|
            Bitmap img = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); | 
						|
            try | 
						|
            { | 
						|
                IStyleGalleryClass pStyleGalleryClass = new MarkerSymbolStyleGalleryClass(); | 
						|
                Graphics gc = Graphics.FromImage(img); | 
						|
                //SystemColors.Window | 
						|
                IntPtr hdc = gc.GetHdc(); | 
						|
                ESRI.ArcGIS.esriSystem.tagRECT rect = new ESRI.ArcGIS.esriSystem.tagRECT(); | 
						|
                rect.left = 0; | 
						|
                rect.top = 0; | 
						|
                rect.right = width; | 
						|
                rect.bottom = height; | 
						|
                pStyleGalleryClass.Preview(pSymbol, hdc.ToInt32(), ref rect); | 
						|
                //gc.Save(); | 
						|
 | 
						|
                gc.ReleaseHdc(hdc); | 
						|
                gc.Dispose(); | 
						|
                return img; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("预览标记符号失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                //img.Dispose(); | 
						|
                //img = null; | 
						|
            } | 
						|
 | 
						|
        } | 
						|
 | 
						|
        private Bitmap PreViewFillSymbol(ISymbol pSymbol, int width, int height) | 
						|
        { | 
						|
            Bitmap img = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); | 
						|
            try | 
						|
            { | 
						|
                IStyleGalleryClass pStyleGalleryClass = new FillSymbolStyleGalleryClass(); | 
						|
 | 
						|
                Graphics gc = Graphics.FromImage(img); | 
						|
                //SystemColors.Window | 
						|
 | 
						|
                IntPtr hdc = gc.GetHdc(); | 
						|
                ESRI.ArcGIS.esriSystem.tagRECT rect = new ESRI.ArcGIS.esriSystem.tagRECT(); | 
						|
                rect.left = 0; | 
						|
                rect.top = 0; | 
						|
                rect.right = width; | 
						|
                rect.bottom = height; | 
						|
                pStyleGalleryClass.Preview(pSymbol, hdc.ToInt32(), ref rect); | 
						|
                //gc.Save(); | 
						|
 | 
						|
                gc.ReleaseHdc(hdc); | 
						|
                gc.Dispose(); | 
						|
                img.MakeTransparent(Color.FromArgb(SystemColors.Window.ToArgb())); | 
						|
                img.Save("E:\\preview.png"); | 
						|
 | 
						|
 | 
						|
                return img.Clone(new Rectangle(4, 4, width - 6, height - 6), System.Drawing.Imaging.PixelFormat.Format24bppRgb); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("预览填充符号失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                img.Dispose(); | 
						|
                img = null; | 
						|
            } | 
						|
 | 
						|
        } | 
						|
 | 
						|
        private Bitmap PreViewLineSymbol(ISymbol pSymbol, int width, int height) | 
						|
        { | 
						|
            Bitmap img = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); | 
						|
            try | 
						|
            { | 
						|
                IStyleGalleryClass pStyleGalleryClass = new LineSymbolStyleGalleryClassClass(); | 
						|
 | 
						|
                Graphics gc = Graphics.FromImage(img); | 
						|
                //SystemColors.Window | 
						|
                IntPtr hdc = gc.GetHdc(); | 
						|
                ESRI.ArcGIS.esriSystem.tagRECT rect = new ESRI.ArcGIS.esriSystem.tagRECT(); | 
						|
                rect.left = 0; | 
						|
                rect.top = 0; | 
						|
                rect.right = width; | 
						|
                rect.bottom = height; | 
						|
                pStyleGalleryClass.Preview(pSymbol, hdc.ToInt32(), ref rect); | 
						|
                //gc.Save(); | 
						|
 | 
						|
                gc.ReleaseHdc(hdc); | 
						|
                gc.Dispose(); | 
						|
                return img; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("预览线符号失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                img.Dispose(); | 
						|
                img = null; | 
						|
            } | 
						|
 | 
						|
 | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 自定义样式转换为ESRI样式 | 
						|
        /// </summary> | 
						|
        /// <param name="symbol"></param> | 
						|
        /// <returns></returns> | 
						|
        public ESRI.ArcGIS.Display.ISymbol CustomSymbolToEsriSymbol(Kingo.Framework.LayerStyleConvert.XSDClass.Symbol symbol) | 
						|
        { | 
						|
            ESRI.ArcGIS.Display.ISymbol esriSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.FSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.FSymbol fsSymbol = symbol as Kingo.Framework.LayerStyleConvert.XSDClass.FSymbol; | 
						|
                    esriSymbol = (ISymbol)CustomFillToEsriFill(fsSymbol); | 
						|
 | 
						|
                } | 
						|
                else if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.LSymbol) | 
						|
                { | 
						|
                    LSymbol lSymbol = symbol as LSymbol; | 
						|
                    esriSymbol = (ISymbol)CustomLineSymbolToEsriLSymbol(lSymbol); | 
						|
                } | 
						|
                else if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.MSymbol) | 
						|
                { | 
						|
                    MSymbol mSymbol = symbol as MSymbol; | 
						|
                    esriSymbol = (ISymbol)CustomMarkerSymbolToEsriMSymbol(mSymbol); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("自定义样式转换为ESRI样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return esriSymbol; | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// Arcgis填充样式转换为自定义样式格式 | 
						|
        /// </summary> | 
						|
        /// <param name="esriSymbol"></param> | 
						|
        /// <returns></returns> | 
						|
        public Kingo.Framework.LayerStyleConvert.XSDClass.FSymbol EsriFillSymbolToCustomSymbol(ESRI.ArcGIS.Display.IFillSymbol esriSymbol) | 
						|
        { | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.FSymbol symbolCustom = null; | 
						|
            try | 
						|
            { | 
						|
                if (esriSymbol is ESRI.ArcGIS.Display.MultiLayerFillSymbol) | 
						|
                { | 
						|
                    ESRI.ArcGIS.Display.MultiLayerFillSymbol esriMulti = esriSymbol as ESRI.ArcGIS.Display.MultiLayerFillSymbol; | 
						|
                    if (esriMulti != null) | 
						|
                    { | 
						|
                        if (esriMulti.LayerCount == 1) | 
						|
                        { | 
						|
                            Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol customMulti = new Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol(); | 
						|
                            int[] color = null; | 
						|
                            for (int i = 0; i < esriMulti.LayerCount; i++) | 
						|
                            { | 
						|
                                FSymbol symbolTemp = EsriFillSymbolToCustomSymbolOne(esriMulti.get_Layer(i)); | 
						|
                                if (symbolTemp == null) continue; | 
						|
                                customMulti.AddLayerFillSymbol(symbolTemp); | 
						|
                            } | 
						|
 | 
						|
                            customMulti.Outline = EsriLSymbolToCustomLineSymbol(esriMulti.Outline); | 
						|
                            if (esriMulti.Color != null && esriMulti.Color.NullColor) | 
						|
                            { | 
						|
                                customMulti.Color[3] = 0;// new int[4]; | 
						|
                            } | 
						|
                            else | 
						|
                            { | 
						|
                                if (esriMulti.Color == null) | 
						|
                                { | 
						|
                                    customMulti.Color = GetColorArr(esriMulti.Outline.Color); | 
						|
                                } | 
						|
                                else | 
						|
                                    customMulti.Color = GetColorArr(esriMulti.Color); | 
						|
                            } | 
						|
                            symbolCustom = customMulti; | 
						|
                        } | 
						|
                        else | 
						|
                        { | 
						|
                            Kingo.Framework.LayerStyleConvert.XSDClass.PFSymbol symbolPicCustom = new PFSymbol(); | 
						|
                            symbolPicCustom.Outline = EsriLSymbolToCustomLineSymbol(esriMulti.Outline); | 
						|
                            symbolPicCustom.Xscale = 1; | 
						|
                            symbolPicCustom.Yscale = 1; | 
						|
                            Bitmap imgRst = PreViewFillSymbol((ISymbol)esriSymbol, 70, 70); | 
						|
                            //SetImagesPix(imgRst); | 
						|
                            //imgRst.Save("E:\\imgrst.bmp"); | 
						|
                            //imgRst=(Bitmap) Bitmap.FromFile("E:\\imgrst1.bmp"); | 
						|
                            if (imgRst != null) | 
						|
                            { | 
						|
                                //System.IO.MemoryStream imgStream = new System.IO.MemoryStream(); | 
						|
                                //imgRst.Save(imgStream, System.Drawing.Imaging.ImageFormat.Bmp); | 
						|
                                //symbolPicCustom.ImageData = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetBase64FromImage(Image.FromStream(imgStream)); | 
						|
                                symbolPicCustom.ImageData = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetBase64FromImage(imgRst); | 
						|
                                symbolPicCustom.Height = imgRst.Height; | 
						|
                                symbolPicCustom.Width = imgRst.Width; | 
						|
                                imgRst.Dispose(); | 
						|
                                imgRst = null; | 
						|
                            } | 
						|
 | 
						|
                            symbolCustom = symbolPicCustom; | 
						|
                        } | 
						|
                    } | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    symbolCustom = EsriFillSymbolToCustomSymbolOne(esriSymbol); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("Arcgis填充样式转换为自定义样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return symbolCustom; | 
						|
        } | 
						|
 | 
						|
        private Kingo.Framework.LayerStyleConvert.XSDClass.FSymbol EsriFillSymbolToCustomSymbolOne(ESRI.ArcGIS.Display.IFillSymbol esriSymbol) | 
						|
        { | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.FSymbol symbolCustom = null; | 
						|
            try | 
						|
            { | 
						|
                if (esriSymbol is IMarkerFillSymbol) | 
						|
                { | 
						|
                    IMarkerFillSymbol esriMarkerFill = esriSymbol as IMarkerFillSymbol; | 
						|
                    if (esriMarkerFill != null) | 
						|
                    { | 
						|
                        MFSymbol customSymbol = new MFSymbol(); | 
						|
                        customSymbol.Color = GetColorArr(esriMarkerFill.Color); | 
						|
                        customSymbol.GridAngle = esriMarkerFill.GridAngle; | 
						|
                        customSymbol.MarkerSymbol = EsriMarkerSymbolToCustomMSymbol(esriMarkerFill.MarkerSymbol); | 
						|
                        customSymbol.Outline = EsriLSymbolToCustomLineSymbol(esriMarkerFill.Outline); | 
						|
                        customSymbol.Style = (Kingo.Framework.LayerStyleConvert.XSDClass.esriMarkerFillStyle)((int)esriMarkerFill.Style); | 
						|
                        symbolCustom = customSymbol; | 
						|
                    } | 
						|
                } | 
						|
                else if (esriSymbol is ILineFillSymbol) | 
						|
                { | 
						|
                    ILineFillSymbol esriLineFill = esriSymbol as ILineFillSymbol; | 
						|
                    if (esriLineFill != null) | 
						|
                    { | 
						|
                        Kingo.Framework.LayerStyleConvert.XSDClass.LineFSymbol symbolLineCustom = new Kingo.Framework.LayerStyleConvert.XSDClass.LineFSymbol(); | 
						|
                        symbolLineCustom.Angle = esriLineFill.Angle; | 
						|
                        Color color = System.Drawing.ColorTranslator.FromWin32(esriSymbol.Color.RGB); | 
						|
                        symbolLineCustom.Color = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetInt4ColorFromColor(color); | 
						|
                        symbolLineCustom.LineSymbol = EsriLSymbolToCustomLineSymbol(esriLineFill.LineSymbol); | 
						|
                        symbolLineCustom.Offset = esriLineFill.Offset; | 
						|
                        symbolLineCustom.Outline = EsriLSymbolToCustomLineSymbol(esriLineFill.Outline); | 
						|
                        symbolLineCustom.Separation = esriLineFill.Separation; | 
						|
                        symbolCustom = symbolLineCustom; | 
						|
                    } | 
						|
                } | 
						|
                else if (esriSymbol is ISimpleFillSymbol) | 
						|
                { | 
						|
                    ISimpleFillSymbol esriSimpleFill = esriSymbol as ISimpleFillSymbol; | 
						|
                    if (esriSimpleFill != null) | 
						|
                    { | 
						|
                        Kingo.Framework.LayerStyleConvert.XSDClass.SFSymbol symbolSimpleCustom = new SFSymbol(); | 
						|
                        Color color = System.Drawing.ColorTranslator.FromWin32(esriSymbol.Color.RGB); | 
						|
                        symbolSimpleCustom.Color = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetInt4ColorFromColor(color); | 
						|
                        if (esriSymbol.Color.NullColor) | 
						|
                        { | 
						|
                            symbolSimpleCustom.Color[3] = 0; | 
						|
                            //symbolSimpleCustom.Color = new int[4]; | 
						|
                        } | 
						|
                        symbolSimpleCustom.Outline = EsriLSymbolToCustomLineSymbol(esriSimpleFill.Outline); | 
						|
                        symbolSimpleCustom.Style = (Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle)((int)esriSimpleFill.Style); | 
						|
                        symbolCustom = symbolSimpleCustom; | 
						|
                    } | 
						|
                } | 
						|
                else if (esriSymbol is IPictureFillSymbol) | 
						|
                { | 
						|
                    IPictureFillSymbol esriPictureFill = esriSymbol as IPictureFillSymbol; | 
						|
                    if (esriPictureFill != null) | 
						|
                    { | 
						|
                        Kingo.Framework.LayerStyleConvert.XSDClass.PFSymbol symbolPicCustom = new PFSymbol(); | 
						|
                        symbolPicCustom.Angle = (int)esriPictureFill.Angle; | 
						|
                        System.Drawing.Image image = System.Drawing.Image.FromHbitmap(new System.IntPtr(esriPictureFill.Picture.Handle)); | 
						|
                        symbolPicCustom.ImageData = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetBase64FromImage(image); | 
						|
                        symbolPicCustom.Height = image.Height; | 
						|
                        symbolPicCustom.Width = image.Width; | 
						|
                        symbolPicCustom.Outline = EsriLSymbolToCustomLineSymbol(esriPictureFill.Outline); | 
						|
                        symbolPicCustom.Xscale = (int)esriPictureFill.XScale; | 
						|
                        symbolPicCustom.Yscale = (int)esriPictureFill.YScale; | 
						|
                        symbolCustom = symbolPicCustom; | 
						|
                        image.Dispose(); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("ESRI样式转换为自定义样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return symbolCustom; | 
						|
        } | 
						|
        /// <summary> | 
						|
        /// 自定义填充样式转换为ESRI填充样式 | 
						|
        /// </summary> | 
						|
        /// <param name="fSymbol"></param> | 
						|
        /// <returns></returns> | 
						|
        public ESRI.ArcGIS.Display.IFillSymbol CustomFillToEsriFill(Kingo.Framework.LayerStyleConvert.XSDClass.FSymbol fSymbol) | 
						|
        { | 
						|
            ESRI.ArcGIS.Display.IFillSymbol fillSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (fSymbol is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol cutomMultiFill = fSymbol as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol; | 
						|
                    if (cutomMultiFill == null || cutomMultiFill.lstFSymbol == null || cutomMultiFill.lstFSymbol.Count <= 0) return null; | 
						|
                    ESRI.ArcGIS.Display.IMultiLayerFillSymbol mulLayer = new ESRI.ArcGIS.Display.MultiLayerFillSymbol(); | 
						|
                    for (int i = cutomMultiFill.lstFSymbol.Count - 1; i >= 0; i--) | 
						|
                    { | 
						|
                        ESRI.ArcGIS.Display.IFillSymbol fillSymbolTemp = CustomFillToEsriFillOne(cutomMultiFill.GetLayer(i)); | 
						|
                        if (fillSymbolTemp != null) | 
						|
                        { | 
						|
                            mulLayer.AddLayer(fillSymbolTemp); | 
						|
                        } | 
						|
                    } | 
						|
                    //mulLayer.Color = GetColor(cutomMultiFill.Color, true); | 
						|
                    //mulLayer.Color.Transparency = 0; | 
						|
                    //mulLayer.Color.NullColor = true; | 
						|
 | 
						|
                    mulLayer.Outline = CustomLineSymbolToEsriLSymbol(fSymbol.Outline); | 
						|
                    fillSymbol = (ESRI.ArcGIS.Display.IFillSymbol)mulLayer; | 
						|
 | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    fillSymbol = CustomFillToEsriFillOne(fSymbol); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //LogAPI.Debug("自定义填充样式转换为ESRI填充样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return fillSymbol; | 
						|
        } | 
						|
 | 
						|
        private ESRI.ArcGIS.Display.IFillSymbol CustomFillToEsriFillOne(Kingo.Framework.LayerStyleConvert.XSDClass.FSymbol fSymbol) | 
						|
        { | 
						|
            ESRI.ArcGIS.Display.IFillSymbol fillSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (fSymbol is Kingo.Framework.LayerStyleConvert.XSDClass.SFSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.SFSymbol sfSymbol = fSymbol as Kingo.Framework.LayerStyleConvert.XSDClass.SFSymbol; | 
						|
                    ESRI.ArcGIS.Display.SimpleFillSymbol simplefillSymbol = new SimpleFillSymbol(); | 
						|
                    simplefillSymbol.Color = GetColor(sfSymbol.Color); | 
						|
                    simplefillSymbol.Outline = CustomLineSymbolToEsriLSymbol(sfSymbol.Outline); | 
						|
                    simplefillSymbol.Style = (ESRI.ArcGIS.Display.esriSimpleFillStyle)((int)sfSymbol.Style); | 
						|
                    fillSymbol = simplefillSymbol; | 
						|
                } | 
						|
                else if (fSymbol is Kingo.Framework.LayerStyleConvert.XSDClass.LineFSymbol) | 
						|
                { | 
						|
                    LineFSymbol lineFillSymbol = fSymbol as LineFSymbol; | 
						|
                    LineFillSymbol esriLinefillSymbol = new LineFillSymbol(); | 
						|
                    esriLinefillSymbol.Angle = lineFillSymbol.Angle; | 
						|
                    esriLinefillSymbol.Color = GetColor(lineFillSymbol.Color); | 
						|
                    esriLinefillSymbol.LineSymbol = CustomLineSymbolToEsriLSymbol(lineFillSymbol.LineSymbol); | 
						|
                    esriLinefillSymbol.Offset = lineFillSymbol.Offset; | 
						|
                    esriLinefillSymbol.Outline = CustomLineSymbolToEsriLSymbol(lineFillSymbol.Outline); | 
						|
                    esriLinefillSymbol.Separation = lineFillSymbol.Separation; | 
						|
                    fillSymbol = esriLinefillSymbol; | 
						|
                } | 
						|
                else if (fSymbol is Kingo.Framework.LayerStyleConvert.XSDClass.PFSymbol) | 
						|
                { | 
						|
                    PFSymbol pictureFillSymbol = fSymbol as PFSymbol; | 
						|
                    PictureFillSymbol esriPicFillSymbol = new PictureFillSymbol(); | 
						|
                    esriPicFillSymbol.Angle = pictureFillSymbol.Angle; | 
						|
                    esriPicFillSymbol.Outline = CustomLineSymbolToEsriLSymbol(pictureFillSymbol.Outline); | 
						|
                    Image img = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetImageFromBase64(pictureFillSymbol.ImageData); | 
						|
                    esriPicFillSymbol.Picture = ConvertImg.Convert(img); | 
						|
                    esriPicFillSymbol.XScale = pictureFillSymbol.Xscale; | 
						|
                    esriPicFillSymbol.YScale = pictureFillSymbol.Yscale; | 
						|
                    fillSymbol = esriPicFillSymbol; | 
						|
                } | 
						|
                else if (fSymbol is Kingo.Framework.LayerStyleConvert.XSDClass.MFSymbol) | 
						|
                { | 
						|
                    MFSymbol customSymbol = fSymbol as MFSymbol; | 
						|
                    MarkerFillSymbol esriMarkerFillSymbol = new MarkerFillSymbol(); | 
						|
                    esriMarkerFillSymbol.Color = GetColor(customSymbol.Color); | 
						|
                    esriMarkerFillSymbol.GridAngle = customSymbol.GridAngle; | 
						|
                    esriMarkerFillSymbol.MarkerSymbol = CustomMarkerSymbolToEsriMSymbol(customSymbol.MarkerSymbol); | 
						|
                    esriMarkerFillSymbol.Outline = CustomLineSymbolToEsriLSymbol(customSymbol.Outline); | 
						|
                    esriMarkerFillSymbol.Style = (ESRI.ArcGIS.Display.esriMarkerFillStyle)((int)customSymbol.Style); | 
						|
                    fillSymbol = esriMarkerFillSymbol; | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("自定义填充样式转换为ESRI填充样式失败:" + ex); | 
						|
            } | 
						|
            return fillSymbol; | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 自定义线样式转ESRI线样式 | 
						|
        /// </summary> | 
						|
        /// <param name="symbol"></param> | 
						|
        /// <returns></returns> | 
						|
        public ILineSymbol CustomLineSymbolToEsriLSymbol(LSymbol symbol) | 
						|
        { | 
						|
            ILineSymbol lineSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol multiLineSymbol = symbol as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol; | 
						|
                    if (multiLineSymbol == null || multiLineSymbol.lstLSymbol == null) | 
						|
                        return null; | 
						|
                    ESRI.ArcGIS.Display.MultiLayerLineSymbol esriLineSymbol = new ESRI.ArcGIS.Display.MultiLayerLineSymbol(); | 
						|
                    for (int i = 0; i < multiLineSymbol.lstLSymbol.Count; i++) | 
						|
                    { | 
						|
                        ILineSymbol lineSymbolTemp = CustomLineSymbolToEsriLSymbolOne(multiLineSymbol.GetLayer(i)); | 
						|
                        if (lineSymbolTemp != null) | 
						|
                            esriLineSymbol.AddLayer(lineSymbolTemp); | 
						|
                    } | 
						|
                    lineSymbol = esriLineSymbol; | 
						|
                    if (symbol.Color != null) | 
						|
                        lineSymbol.Color = GetColor(symbol.Color); | 
						|
                    lineSymbol.Width = multiLineSymbol.Width; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    lineSymbol = CustomLineSymbolToEsriLSymbolOne(symbol); | 
						|
                } | 
						|
 | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("自定义线样式转ESRI线样式:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return lineSymbol; | 
						|
        } | 
						|
        private ILineSymbol CustomLineSymbolToEsriLSymbolOne(LSymbol symbol) | 
						|
        { | 
						|
            ILineSymbol lineSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (symbol is SLSymbol) | 
						|
                { | 
						|
                    SLSymbol customSymbol = symbol as SLSymbol; | 
						|
                    ISimpleLineSymbol esriSymbol = new SimpleLineSymbolClass(); | 
						|
                    esriSymbol.Color = GetColor(customSymbol.Color); | 
						|
                    esriSymbol.Style = (ESRI.ArcGIS.Display.esriSimpleLineStyle)((int)customSymbol.Style); | 
						|
                    esriSymbol.Width = customSymbol.Width; | 
						|
                    lineSymbol = esriSymbol; | 
						|
                } | 
						|
                else if (symbol is MarkLSymbol) | 
						|
                { | 
						|
                    MarkLSymbol customSymbol = symbol as MarkLSymbol; | 
						|
                    IMarkerLineSymbol esriSymbol = new MarkerLineSymbolClass(); | 
						|
                    esriSymbol.Color = GetColor(customSymbol.Color); | 
						|
                    esriSymbol.MarkerSymbol = CustomMarkerSymbolToEsriMSymbol(customSymbol.MarkerSymbol); | 
						|
                    esriSymbol.Width = customSymbol.Width; | 
						|
                    lineSymbol = esriSymbol; | 
						|
                } | 
						|
                else if (symbol is PictureLSymbol) | 
						|
                { | 
						|
                    PictureLSymbol customSymbol = symbol as PictureLSymbol; | 
						|
                    IPictureLineSymbol esriSymbol = new PictureLineSymbolClass(); | 
						|
                    esriSymbol.BackgroundColor = GetColor(customSymbol.BackgroundColor); | 
						|
                    esriSymbol.BitmapTransparencyColor = GetColor(customSymbol.BitmapTransparencyColor); | 
						|
                    esriSymbol.Color = GetColor(customSymbol.Color); | 
						|
                    esriSymbol.Offset = customSymbol.Offset; | 
						|
                    Image img = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetImageFromBase64(customSymbol.ImgData); | 
						|
                    esriSymbol.Picture = ConvertImg.Convert(img); | 
						|
                    esriSymbol.Rotate = customSymbol.Rotate; | 
						|
                    esriSymbol.SwapForeGroundBackGroundColor = customSymbol.SwapForeGroundBackGroundColor; | 
						|
                    esriSymbol.Width = customSymbol.Width; | 
						|
                    esriSymbol.XScale = customSymbol.XScale; | 
						|
                    esriSymbol.YScale = customSymbol.YScale; | 
						|
                    lineSymbol = esriSymbol; | 
						|
                } | 
						|
                else if (symbol is HashLSymbol) | 
						|
                { | 
						|
                    HashLSymbol customSymbol = symbol as HashLSymbol; | 
						|
                    IHashLineSymbol esriSymbol = new HashLineSymbolClass(); | 
						|
                    esriSymbol.Angle = customSymbol.Angle; | 
						|
                    esriSymbol.Color = GetColor(customSymbol.Color); | 
						|
                    esriSymbol.HashSymbol = CustomLineSymbolToEsriLSymbol(customSymbol.HashSymbol); | 
						|
                    esriSymbol.Width = customSymbol.Width; | 
						|
                    lineSymbol = esriSymbol; | 
						|
                } | 
						|
                else if (symbol is CLSymbol) | 
						|
                { | 
						|
                    CLSymbol customSymbol = symbol as CLSymbol; | 
						|
                    ICartographicLineSymbol esriSymbol = new CartographicLineSymbolClass(); | 
						|
                    esriSymbol.Cap = (ESRI.ArcGIS.Display.esriLineCapStyle)((int)customSymbol.Cap); | 
						|
                    esriSymbol.Color = GetColor(customSymbol.Color); | 
						|
                    esriSymbol.Join = (ESRI.ArcGIS.Display.esriLineJoinStyle)((int)customSymbol.Join); | 
						|
                    esriSymbol.MiterLimit = customSymbol.MiterLimit; | 
						|
                    esriSymbol.Width = customSymbol.Width; | 
						|
                    lineSymbol = esriSymbol; | 
						|
                } | 
						|
 | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //LogAPI.Debug("自定义线样式转ESRI线样式:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return lineSymbol; | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// ESRI线样式转自定义线样式 | 
						|
        /// </summary> | 
						|
        /// <param name="symbol"></param> | 
						|
        /// <returns></returns> | 
						|
        public LSymbol EsriLSymbolToCustomLineSymbol(ILineSymbol symbol) | 
						|
        { | 
						|
            LSymbol newSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (symbol is ESRI.ArcGIS.Display.MultiLayerLineSymbol) | 
						|
                { | 
						|
                    ESRI.ArcGIS.Display.MultiLayerLineSymbol esriSymbol = symbol as ESRI.ArcGIS.Display.MultiLayerLineSymbol; | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol customSymbol = new Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol(); | 
						|
                    if (esriSymbol.LayerCount > 0) | 
						|
                    { | 
						|
                        int[] colors = null; | 
						|
                        for (int i = esriSymbol.LayerCount - 1; i >= 0; i--) | 
						|
                        { | 
						|
                            LSymbol lsymbolTemp = EsriLSymbolToCustomLineSymbolOne(esriSymbol.get_Layer(i)); | 
						|
                            if (lsymbolTemp == null) continue; | 
						|
                            customSymbol.AddLayerFillSymbol(lsymbolTemp); | 
						|
 | 
						|
                        } | 
						|
                        customSymbol.Color = GetColorArr(esriSymbol.Color); | 
						|
                        customSymbol.Width = esriSymbol.Width; | 
						|
                        newSymbol = customSymbol.lstLSymbol[0]; | 
						|
                        newSymbol.Color = GetColorArr(esriSymbol.Color); | 
						|
                        newSymbol.Width = esriSymbol.Width; | 
						|
                    } | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    newSymbol = EsriLSymbolToCustomLineSymbolOne(symbol); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("ESRI线样式转自定义线样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return newSymbol; | 
						|
        } | 
						|
 | 
						|
        private LSymbol EsriLSymbolToCustomLineSymbolOne(ILineSymbol symbol) | 
						|
        { | 
						|
            LSymbol newSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (symbol is ISimpleLineSymbol) | 
						|
                { | 
						|
                    ISimpleLineSymbol esriSymbol = symbol as ISimpleLineSymbol; | 
						|
                    SLSymbol customSymbol = new SLSymbol(); | 
						|
                    customSymbol.Color = GetColorArr(esriSymbol.Color); | 
						|
                    customSymbol.Style = (Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleLineStyle)((int)esriSymbol.Style); | 
						|
                    customSymbol.Width = esriSymbol.Width; | 
						|
                    newSymbol = customSymbol; | 
						|
                } | 
						|
                else if (symbol is IMarkerLineSymbol) | 
						|
                { | 
						|
                    IMarkerLineSymbol esriSymbol = symbol as IMarkerLineSymbol; | 
						|
                    MarkLSymbol customSymbol = new MarkLSymbol(); | 
						|
                    customSymbol.Color = GetColorArr(esriSymbol.Color); | 
						|
                    customSymbol.MarkerSymbol = EsriMarkerSymbolToCustomMSymbol(esriSymbol.MarkerSymbol); | 
						|
                    customSymbol.Width = esriSymbol.Width; | 
						|
                    newSymbol = customSymbol; | 
						|
                } | 
						|
                else if (symbol is IHashLineSymbol) | 
						|
                { | 
						|
                    IHashLineSymbol esriSymbol = symbol as IHashLineSymbol; | 
						|
                    HashLSymbol customSymbol = new HashLSymbol(); | 
						|
                    customSymbol.Angle = esriSymbol.Angle; | 
						|
                    customSymbol.Color = GetColorArr(esriSymbol.Color); | 
						|
                    customSymbol.HashSymbol = EsriLSymbolToCustomLineSymbol(esriSymbol.HashSymbol); | 
						|
                    customSymbol.Width = esriSymbol.Width; | 
						|
                    newSymbol = customSymbol; | 
						|
                } | 
						|
                else if (symbol is IPictureLineSymbol) | 
						|
                { | 
						|
                    IPictureLineSymbol esriSymbol = symbol as IPictureLineSymbol; | 
						|
                    PictureLSymbol customSymbol = new PictureLSymbol(); | 
						|
                    customSymbol.BackgroundColor = GetColorArr(esriSymbol.BackgroundColor); | 
						|
                    customSymbol.BitmapTransparencyColor = GetColorArr(esriSymbol.BitmapTransparencyColor); | 
						|
                    customSymbol.Color = GetColorArr(esriSymbol.Color); | 
						|
                    Bitmap bitmap = PreViewLineSymbol((ISymbol)symbol, 100, 2); | 
						|
                    if (bitmap != null) | 
						|
                    { | 
						|
                        System.IO.MemoryStream imgStream = new System.IO.MemoryStream(); | 
						|
                        bitmap.Save("E:\\LineSymbol.png"); | 
						|
                        bitmap.Save(imgStream, System.Drawing.Imaging.ImageFormat.Png); | 
						|
                        customSymbol.ImgData = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetBase64FromImage(Image.FromStream(imgStream)); | 
						|
                        bitmap.Dispose(); | 
						|
                        bitmap = null; | 
						|
                    } | 
						|
 | 
						|
                    customSymbol.Offset = esriSymbol.Offset; | 
						|
                    customSymbol.Rotate = esriSymbol.Rotate; | 
						|
                    customSymbol.SwapForeGroundBackGroundColor = esriSymbol.SwapForeGroundBackGroundColor; | 
						|
                    customSymbol.Width = esriSymbol.Width; | 
						|
                    customSymbol.XScale = esriSymbol.XScale; | 
						|
                    customSymbol.YScale = esriSymbol.YScale; | 
						|
                    newSymbol = customSymbol; | 
						|
                } | 
						|
                else if (symbol is ICartographicLineSymbol) | 
						|
                { | 
						|
                    ICartographicLineSymbol esriSymbol = symbol as ICartographicLineSymbol; | 
						|
                    CLSymbol customSymbol = new CLSymbol(); | 
						|
                    customSymbol.Cap = (Kingo.Framework.LayerStyleConvert.XSDClass.esriLineCapStyle)((int)esriSymbol.Cap); | 
						|
                    customSymbol.Color = GetColorArr(esriSymbol.Color); | 
						|
                    customSymbol.Join = (Kingo.Framework.LayerStyleConvert.XSDClass.esriLineJoinStyle)((int)esriSymbol.Join); | 
						|
                    customSymbol.MiterLimit = esriSymbol.MiterLimit; | 
						|
                    customSymbol.Width = esriSymbol.Width; | 
						|
                    newSymbol = customSymbol; | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("ESRI线样式转自定义线样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return newSymbol; | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 自定义点样式转换为ESRI点样式 | 
						|
        /// </summary> | 
						|
        /// <param name="symbol"></param> | 
						|
        /// <returns></returns> | 
						|
        public IMarkerSymbol CustomMarkerSymbolToEsriMSymbol(MSymbol symbol) | 
						|
        { | 
						|
            IMarkerSymbol markerSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerMarkerSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerMarkerSymbol customSymbol = symbol as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerMarkerSymbol; | 
						|
                    if (customSymbol == null || customSymbol.LayerCount <= 0) return null; | 
						|
                    IMultiLayerMarkerSymbol esriSymbol = new ESRI.ArcGIS.Display.MultiLayerMarkerSymbolClass(); | 
						|
                    for (int i = 0; i < customSymbol.LayerCount; i++) | 
						|
                    { | 
						|
                        IMarkerSymbol symbolTemp = CustomMarkerSymbolToEsriMSymbolOne(customSymbol.GetLayer(i)); | 
						|
                        if (symbolTemp == null) continue; | 
						|
                        esriSymbol.AddLayer(symbolTemp); | 
						|
                    } | 
						|
                    markerSymbol = esriSymbol; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    markerSymbol = CustomMarkerSymbolToEsriMSymbolOne(symbol); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //LogAPI.Debug("自定义点样式转换为ESRI点样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return markerSymbol; | 
						|
        } | 
						|
 | 
						|
        private IMarkerSymbol CustomMarkerSymbolToEsriMSymbolOne(MSymbol symbol) | 
						|
        { | 
						|
            IMarkerSymbol markerSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.SMarkerSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.SMarkerSymbol customSymbol = symbol as Kingo.Framework.LayerStyleConvert.XSDClass.SMarkerSymbol; | 
						|
                    if (customSymbol == null) return null; | 
						|
                    ISimpleMarkerSymbol esriSymbol = new SimpleMarkerSymbolClass(); | 
						|
                    esriSymbol.Angle = customSymbol.Angle; | 
						|
                    esriSymbol.Color = GetColor(customSymbol.Color); | 
						|
                    esriSymbol.Outline = customSymbol.outline == null; | 
						|
                    if (customSymbol.outline != null) | 
						|
                    { | 
						|
                        esriSymbol.OutlineColor = GetColor(customSymbol.outline.Color); | 
						|
                        esriSymbol.OutlineSize = customSymbol.outline.Width; | 
						|
                    } | 
						|
                    esriSymbol.Size = customSymbol.Size; | 
						|
                    esriSymbol.Style = (ESRI.ArcGIS.Display.esriSimpleMarkerStyle)((int)customSymbol.Style); | 
						|
                    esriSymbol.XOffset = customSymbol.XOffset; | 
						|
                    esriSymbol.YOffset = customSymbol.YOffset; | 
						|
                    markerSymbol = esriSymbol; | 
						|
                } | 
						|
                else if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.AMarkSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.AMarkSymbol customSymbol = symbol as Kingo.Framework.LayerStyleConvert.XSDClass.AMarkSymbol; | 
						|
                    if (customSymbol == null) return null; | 
						|
                    IArrowMarkerSymbol esriSymbol = new ArrowMarkerSymbolClass(); | 
						|
                    esriSymbol.Angle = customSymbol.Angle; | 
						|
                    esriSymbol.Color = GetColor(customSymbol.Color); | 
						|
                    esriSymbol.Length = customSymbol.Length; | 
						|
                    esriSymbol.Size = customSymbol.Size; | 
						|
                    esriSymbol.Style = (ESRI.ArcGIS.Display.esriArrowMarkerStyle)((int)customSymbol.Style); | 
						|
                    esriSymbol.Width = customSymbol.Width; | 
						|
                    esriSymbol.XOffset = customSymbol.XOffset; | 
						|
                    esriSymbol.YOffset = customSymbol.YOffset; | 
						|
                    markerSymbol = esriSymbol; | 
						|
                } | 
						|
                else if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.PMarkSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.PMarkSymbol customSymbol = symbol as Kingo.Framework.LayerStyleConvert.XSDClass.PMarkSymbol; | 
						|
                    if (customSymbol == null) return null; | 
						|
                    IPictureMarkerSymbol esriSymbol = new PictureMarkerSymbolClass(); | 
						|
                    esriSymbol.Angle = customSymbol.Angle; | 
						|
                    //esriSymbol.BackgroundColor = GetColor(customSymbol.BackgroundColor); | 
						|
                    //esriSymbol.BitmapTransparencyColor = GetColor(customSymbol.BitmapTransparencyColor); | 
						|
                    //esriSymbol.Color = GetColor(customSymbol.Color); | 
						|
                    //esriSymbol.Picture = ConvertImg.Convert(Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetImageFromBase64(customSymbol.Picture)); | 
						|
                    //esriSymbol.Size = customSymbol.Size; | 
						|
                    //esriSymbol.SwapForeGroundBackGroundColor = customSymbol.SwapForeGroundBackGroundColor; | 
						|
                    esriSymbol.XOffset = customSymbol.XOffset; | 
						|
                    esriSymbol.YOffset = customSymbol.YOffset; | 
						|
                    markerSymbol = esriSymbol; | 
						|
                } | 
						|
                else if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.CMarkerSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.CMarkerSymbol customSymbol = symbol as Kingo.Framework.LayerStyleConvert.XSDClass.CMarkerSymbol; | 
						|
                    if (customSymbol == null) return null; | 
						|
                    ICharacterMarkerSymbol esriSymbol = new CharacterMarkerSymbolClass(); | 
						|
                    esriSymbol.Angle = customSymbol.Angle; | 
						|
                    esriSymbol.CharacterIndex = customSymbol.CharacterIndex; | 
						|
                    esriSymbol.Color = GetColor(customSymbol.Color); | 
						|
                    esriSymbol.Font = GetIFontDisp(customSymbol.Font); | 
						|
                    esriSymbol.Size = customSymbol.Size; | 
						|
                    esriSymbol.XOffset = customSymbol.XOffset; | 
						|
                    esriSymbol.YOffset = customSymbol.YOffset; | 
						|
                    markerSymbol = esriSymbol; | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //LogAPI.Debug("自定义点样式转换为ESRI点样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return markerSymbol; | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// ESRI点样式转自定义点样式 | 
						|
        /// </summary> | 
						|
        /// <param name="symbol"></param> | 
						|
        /// <returns></returns> | 
						|
        public MSymbol EsriMarkerSymbolToCustomMSymbol(IMarkerSymbol symbol) | 
						|
        { | 
						|
            MSymbol markerSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (symbol is ESRI.ArcGIS.Display.MultiLayerMarkerSymbol) | 
						|
                { | 
						|
                    ESRI.ArcGIS.Display.MultiLayerMarkerSymbol esriSymbol = symbol as ESRI.ArcGIS.Display.MultiLayerMarkerSymbol; | 
						|
                    if (esriSymbol == null) return null; | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerMarkerSymbol customSymbol = new Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerMarkerSymbol(); | 
						|
                    for (int i = 0; i < esriSymbol.LayerCount; i++) | 
						|
                    { | 
						|
                        MSymbol symbolTemp = EsriMarkerSymbolToCustomMSymbolOne(esriSymbol.get_Layer(i)); | 
						|
                        if (symbolTemp == null) continue; | 
						|
                        customSymbol.AddLayerMarkerSymbol(symbolTemp); | 
						|
                    } | 
						|
                    markerSymbol = customSymbol.lstMSymbol[0]; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    markerSymbol = EsriMarkerSymbolToCustomMSymbolOne(symbol); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //LogAPI.Debug("ESRI点样式转自定义点样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return markerSymbol; | 
						|
        } | 
						|
 | 
						|
        private MSymbol EsriMarkerSymbolToCustomMSymbolOne(IMarkerSymbol symbol) | 
						|
        { | 
						|
            MSymbol markerSymbol = null; | 
						|
            try | 
						|
            { | 
						|
                if (symbol is ESRI.ArcGIS.Display.ISimpleMarkerSymbol) | 
						|
                { | 
						|
                    ESRI.ArcGIS.Display.ISimpleMarkerSymbol esriSymbol = symbol as ESRI.ArcGIS.Display.ISimpleMarkerSymbol; | 
						|
 | 
						|
                    if (esriSymbol == null) return null; | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.SMarkerSymbol customSymbol = new SMarkerSymbol(); | 
						|
                    customSymbol.Angle = esriSymbol.Angle; | 
						|
                    customSymbol.Color = GetColorArr(esriSymbol.Color); | 
						|
                    customSymbol.outline = new OutLine() | 
						|
                    { | 
						|
                        Color = GetColorArr(esriSymbol.OutlineColor), | 
						|
                        Width = (int)esriSymbol.OutlineSize | 
						|
                    }; | 
						|
 | 
						|
                    customSymbol.Size = esriSymbol.Size; | 
						|
                    customSymbol.Style = (Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleMarkerStyle)((int)esriSymbol.Style); | 
						|
                    customSymbol.XOffset = esriSymbol.XOffset; | 
						|
                    customSymbol.YOffset = esriSymbol.YOffset; | 
						|
                    markerSymbol = customSymbol; | 
						|
                } | 
						|
                else if (symbol is ESRI.ArcGIS.Display.IArrowMarkerSymbol) | 
						|
                { | 
						|
                    ESRI.ArcGIS.Display.IArrowMarkerSymbol esriSymbol = symbol as ESRI.ArcGIS.Display.IArrowMarkerSymbol; | 
						|
                    if (esriSymbol == null) return null; | 
						|
                    //AMarkSymbol customSymbol = new AMarkSymbol(); | 
						|
                    //customSymbol.Angle = esriSymbol.Angle; | 
						|
                    //customSymbol.Color = GetColorArr(esriSymbol.Color); | 
						|
                    //customSymbol.Length = esriSymbol.Length; | 
						|
                    //customSymbol.Size = esriSymbol.Size; | 
						|
                    //customSymbol.Style = (Shape2KOTool.XSDClass.esriArrowMarkerStyle)((int)esriSymbol.Style); | 
						|
                    //customSymbol.Width = esriSymbol.Width; | 
						|
                    //customSymbol.XOffset = esriSymbol.XOffset; | 
						|
                    //customSymbol.YOffset = esriSymbol.YOffset; | 
						|
                    //markerSymbol = customSymbol; | 
						|
                    PMarkSymbol customSymbol = new PMarkSymbol(); | 
						|
                    //customSymbol.Angle = esriSymbol.Angle; | 
						|
                    customSymbol.Angle = 0; | 
						|
                    customSymbol.ContentType = "image/png"; | 
						|
                    customSymbol.Height = esriSymbol.Size; | 
						|
                    customSymbol.Width = esriSymbol.Size; | 
						|
                    customSymbol.Size = esriSymbol.Size; | 
						|
                    customSymbol.XOffset = esriSymbol.XOffset; | 
						|
                    customSymbol.YOffset = esriSymbol.YOffset; | 
						|
                    Bitmap imgRst = PreViewMarkerSymbol((ISymbol)symbol, Convert.ToInt32(esriSymbol.Size * 2), Convert.ToInt32(esriSymbol.Size * 2)); | 
						|
                    SetImagesPix(imgRst); | 
						|
                    //for (int i = 0; i < imgRst.Width; i++) | 
						|
                    //{ | 
						|
                    //    for (int j = 0; j < imgRst.Height; j++) | 
						|
                    //    { | 
						|
                    //        Color color = imgRst.GetPixel(i, j); | 
						|
                    //        if (color.ToArgb() == SystemColors.Window.ToArgb()) | 
						|
                    //        { | 
						|
                    //            imgRst.SetPixel(i, j, new Color() { }); | 
						|
                    //        } | 
						|
                    //    } | 
						|
                    //} | 
						|
 | 
						|
                    if (imgRst != null) | 
						|
                    { | 
						|
                        System.IO.MemoryStream imgStream = new System.IO.MemoryStream(); | 
						|
                        imgRst.Save(imgStream, System.Drawing.Imaging.ImageFormat.Png); | 
						|
                        customSymbol.ImageData = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetBase64FromImage(Image.FromStream(imgStream)); | 
						|
                        imgRst.Dispose(); | 
						|
                        imgRst = null; | 
						|
                    } | 
						|
                    markerSymbol = customSymbol; | 
						|
                } | 
						|
                else if (symbol is ESRI.ArcGIS.Display.IPictureMarkerSymbol) | 
						|
                { | 
						|
                    ESRI.ArcGIS.Display.IPictureMarkerSymbol esriSymbol = symbol as ESRI.ArcGIS.Display.IPictureMarkerSymbol; | 
						|
                    if (esriSymbol == null) return null; | 
						|
                    PMarkSymbol customSymbol = new PMarkSymbol(); | 
						|
                    customSymbol.Angle = esriSymbol.Angle; | 
						|
                    customSymbol.ContentType = "image/png"; | 
						|
                    customSymbol.Height = esriSymbol.Size; | 
						|
                    customSymbol.Width = esriSymbol.Size; | 
						|
                    customSymbol.Size = esriSymbol.Size; | 
						|
                    customSymbol.XOffset = esriSymbol.XOffset; | 
						|
                    customSymbol.YOffset = esriSymbol.YOffset; | 
						|
                    Bitmap imgRst = PreViewMarkerSymbol((ISymbol)symbol, Convert.ToInt32(esriSymbol.Size), Convert.ToInt32(esriSymbol.Size)); | 
						|
                    if (imgRst != null) | 
						|
                    { | 
						|
                        SetImagesPix(imgRst); | 
						|
                        System.IO.MemoryStream imgStream = new System.IO.MemoryStream(); | 
						|
                        imgRst.Save(imgStream, System.Drawing.Imaging.ImageFormat.Png); | 
						|
                        customSymbol.ImageData = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetBase64FromImage(Image.FromStream(imgStream)); | 
						|
                        imgRst.Dispose(); | 
						|
                        imgRst = null; | 
						|
                        //customSymbol.ImageData = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetBase64FromImage(imgRst); | 
						|
                    } | 
						|
                    markerSymbol = customSymbol; | 
						|
                } | 
						|
                else if (symbol is ESRI.ArcGIS.Display.ICharacterMarkerSymbol) | 
						|
                { | 
						|
                    ESRI.ArcGIS.Display.ICharacterMarkerSymbol esriSymbol = symbol as ESRI.ArcGIS.Display.ICharacterMarkerSymbol; | 
						|
                    if (esriSymbol == null) return null; | 
						|
                    //CMarkerSymbol customSymbol = new CMarkerSymbol(); | 
						|
                    //customSymbol.Angle = esriSymbol.Angle; | 
						|
                    //customSymbol.CharacterIndex = esriSymbol.CharacterIndex; | 
						|
                    //customSymbol.Color = GetColorArr(esriSymbol.Color); | 
						|
                    //customSymbol.Font = GetESRIFont(esriSymbol.Font); | 
						|
                    //customSymbol.Size = esriSymbol.Size; | 
						|
                    //customSymbol.XOffset = esriSymbol.XOffset; | 
						|
                    //customSymbol.YOffset = esriSymbol.YOffset; | 
						|
                    PMarkSymbol customSymbol = new PMarkSymbol(); | 
						|
                    //customSymbol.Angle = esriSymbol.Angle; | 
						|
                    customSymbol.ContentType = "image/png"; | 
						|
                    customSymbol.Height = esriSymbol.Size; | 
						|
                    customSymbol.Width = esriSymbol.Size; | 
						|
                    customSymbol.Size = esriSymbol.Size; | 
						|
                    customSymbol.XOffset = esriSymbol.XOffset; | 
						|
                    customSymbol.YOffset = esriSymbol.YOffset; | 
						|
                    Bitmap imgRst = PreViewMarkerSymbol((ISymbol)symbol, Convert.ToInt32(esriSymbol.Size), Convert.ToInt32(esriSymbol.Size)); | 
						|
                    if (imgRst != null) | 
						|
                    { | 
						|
                        SetImagesPix(imgRst); | 
						|
                        System.IO.MemoryStream imgStream = new System.IO.MemoryStream(); | 
						|
                        imgRst.Save("E:\\tempSymbol.png", System.Drawing.Imaging.ImageFormat.Png); | 
						|
                        imgRst.Save(imgStream, System.Drawing.Imaging.ImageFormat.Png); | 
						|
                        customSymbol.ImageData = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetBase64FromImage(Image.FromStream(imgStream)); | 
						|
                        //customSymbol.ImageData = Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetBase64FromImage(imgRst); | 
						|
                        markerSymbol = customSymbol; | 
						|
                        imgRst.Dispose(); | 
						|
                        imgRst = null; | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
               // LogAPI.Debug("ESRI点样式转自定义点样式失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return markerSymbol; | 
						|
        } | 
						|
 | 
						|
        private void SetImagesPix(Bitmap imgRst) | 
						|
        { | 
						|
            for (int i = 0; i < imgRst.Width; i++) | 
						|
            { | 
						|
                for (int j = 0; j < imgRst.Height; j++) | 
						|
                { | 
						|
                    Color color = imgRst.GetPixel(i, j); | 
						|
                    if (color.ToArgb() == SystemColors.Window.ToArgb()) | 
						|
                    { | 
						|
                        imgRst.SetPixel(i, j, new Color() { }); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        #region 获取ItemInfoDrawingInfo | 
						|
 | 
						|
        public Kingo.Framework.LayerStyleConvert.XSDClass.Renderer GetItemInfoRenderer(ESRI.ArcGIS.Carto.IFeatureRenderer renderer) | 
						|
        { | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.Renderer customRenderer = null; | 
						|
            if (renderer is ISimpleRenderer) | 
						|
            { | 
						|
                customRenderer = GetRenderer(renderer as ISimpleRenderer); | 
						|
            } | 
						|
            else if (renderer is IUniqueValueRenderer) | 
						|
            { | 
						|
                customRenderer = GetUniqueValueRenderer(renderer as IUniqueValueRenderer); | 
						|
            } | 
						|
            return customRenderer; | 
						|
        } | 
						|
 | 
						|
 | 
						|
        public Kingo.Framework.LayerStyleConvert.XSDClass.Renderer GetRenderer(ISimpleRenderer esriSimpleRenderer) | 
						|
        { | 
						|
            Symbol symbol = GetSymbol(esriSimpleRenderer.Symbol); | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.SimpleRenderer simpleRender = new Kingo.Framework.LayerStyleConvert.XSDClass.SimpleRenderer(); | 
						|
            if (symbol is FSymbol) | 
						|
            { | 
						|
                FSymbol fs = symbol as FSymbol; | 
						|
                if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol mSymbol = symbol as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol; | 
						|
                    if (mSymbol.LayerCount > 1) | 
						|
                    { | 
						|
                        SFSymbol sfSymbol = new SFSymbol(); | 
						|
                        sfSymbol.Style = GetesriSimpleFillStyle(mSymbol); | 
						|
 | 
						|
                        sfSymbol.Color = GetLineColor(mSymbol.GetLayer(mSymbol.LayerCount - 1)); | 
						|
 | 
						|
 | 
						|
                        if (mSymbol.Outline is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol) | 
						|
                        { | 
						|
                            sfSymbol.Outline = (mSymbol.Outline as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol).GetLayer(0); | 
						|
                        } | 
						|
                        else | 
						|
                            sfSymbol.Outline = mSymbol.Outline; | 
						|
                        simpleRender.Symbol = sfSymbol; | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        simpleRender.Symbol = GetItemInfoSymbol(mSymbol.GetLayer(0)); | 
						|
                    } | 
						|
 | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    simpleRender.Symbol = symbol; | 
						|
                } | 
						|
            } | 
						|
            else if (symbol is LSymbol) | 
						|
            { | 
						|
                simpleRender.Symbol = symbol; | 
						|
 | 
						|
            } | 
						|
            else if (symbol is MSymbol) | 
						|
            { | 
						|
                simpleRender.Symbol = symbol; | 
						|
            } | 
						|
            simpleRender.Label = esriSimpleRenderer.Label; | 
						|
            simpleRender.Description = esriSimpleRenderer.Description; | 
						|
            return simpleRender; | 
						|
        } | 
						|
 | 
						|
 | 
						|
        public Kingo.Framework.LayerStyleConvert.XSDClass.Symbol GetUniqueSymbol(ISymbol esriSymbol) | 
						|
        { | 
						|
 | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.SimpleRenderer simpleRender = new Kingo.Framework.LayerStyleConvert.XSDClass.SimpleRenderer(); | 
						|
            try | 
						|
            { | 
						|
                Symbol symbol = GetSymbol(esriSymbol); | 
						|
                if (symbol is FSymbol) | 
						|
                { | 
						|
                    FSymbol fs = symbol as FSymbol; | 
						|
                    if (symbol is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol) | 
						|
                    { | 
						|
                        Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol mSymbol = symbol as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol; | 
						|
                        if (mSymbol.LayerCount > 1) | 
						|
                        { | 
						|
                            SFSymbol sfSymbol = new SFSymbol(); | 
						|
                            sfSymbol.Style = GetesriSimpleFillStyle(mSymbol); | 
						|
 | 
						|
                            sfSymbol.Color = GetLineColor(mSymbol.GetLayer(mSymbol.LayerCount - 1)); | 
						|
 | 
						|
 | 
						|
                            if (mSymbol.Outline is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol) | 
						|
                            { | 
						|
                                sfSymbol.Outline = (mSymbol.Outline as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol).GetLayer(0); | 
						|
                            } | 
						|
                            else | 
						|
                                sfSymbol.Outline = mSymbol.Outline; | 
						|
                            simpleRender.Symbol = sfSymbol; | 
						|
 | 
						|
 | 
						|
                        } | 
						|
                        else | 
						|
                        { | 
						|
                            simpleRender.Symbol = GetItemInfoSymbol(mSymbol.GetLayer(0)); | 
						|
                        } | 
						|
 | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        simpleRender.Symbol = symbol; | 
						|
                    } | 
						|
                } | 
						|
                else if (symbol is LSymbol) | 
						|
                { | 
						|
                    simpleRender.Symbol = symbol; | 
						|
 | 
						|
                } | 
						|
                else if (symbol is MSymbol) | 
						|
                { | 
						|
                    simpleRender.Symbol = symbol; | 
						|
                } | 
						|
                //simpleRender.Label = esriSimpleRenderer.Label; | 
						|
                //simpleRender.Description = esriSimpleRenderer.Description; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //LogAPI.Debug("获取唯一符号失败:" + ex); | 
						|
                throw ex; | 
						|
            } | 
						|
            return simpleRender.Symbol; | 
						|
        } | 
						|
 | 
						|
        private int[] GetLineColor(Kingo.Framework.LayerStyleConvert.XSDClass.FSymbol fSymbol) | 
						|
        { | 
						|
            int[] color = new int[4]; | 
						|
            if (fSymbol is LineFSymbol) | 
						|
            { | 
						|
                color = (fSymbol as LineFSymbol).Color; | 
						|
            } | 
						|
            else if (fSymbol is PFSymbol) | 
						|
            { | 
						|
 | 
						|
            } | 
						|
            else if (fSymbol is MFSymbol) | 
						|
            { | 
						|
                color = (fSymbol as MFSymbol).Color; | 
						|
            } | 
						|
            else if (fSymbol is SFSymbol) | 
						|
            { | 
						|
                color = (fSymbol as SFSymbol).Color; | 
						|
            } | 
						|
            return color; | 
						|
        } | 
						|
 | 
						|
        private Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle GetesriSimpleFillStyle(Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerFillSymbol mSymbol) | 
						|
        { | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSSolid; | 
						|
            //if (mSymbol.LayerCount >= 2) | 
						|
            //{ | 
						|
            bool isExistHorizontal = false, isExistVertical = false, isExistBackwardDiagonal = false, isExistForwardDiagonal = false; | 
						|
            for (int i = 0; i < mSymbol.LayerCount; i++) | 
						|
            { | 
						|
                if (mSymbol.GetLayer(i) is LineFSymbol) | 
						|
                { | 
						|
                    Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle tempStyle = GetLineFillStyle(mSymbol.GetLayer(i) as LineFSymbol); | 
						|
                    switch (tempStyle) | 
						|
                    { | 
						|
                        case Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSBackwardDiagonal: | 
						|
                            isExistBackwardDiagonal = true; | 
						|
                            break; | 
						|
                        case Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSCross: | 
						|
                            break; | 
						|
                        case Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSDiagonalCross: | 
						|
                            break; | 
						|
                        case Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSForwardDiagonal: | 
						|
                            isExistForwardDiagonal = true; | 
						|
                            break; | 
						|
                        case Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSHollow: | 
						|
                            break; | 
						|
                        case Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSHorizontal: | 
						|
                            isExistHorizontal = true; | 
						|
                            break; | 
						|
                        case Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSSolid: | 
						|
                            break; | 
						|
                        case Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSVertical: | 
						|
                            isExistVertical = true; | 
						|
                            break; | 
						|
                        default: | 
						|
                            break; | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            if (isExistHorizontal && isExistVertical) | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSCross; | 
						|
            } | 
						|
            else if (isExistBackwardDiagonal && isExistForwardDiagonal) | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSDiagonalCross; | 
						|
            } | 
						|
            else if (mSymbol.GetLayer(mSymbol.LayerCount - 1) is LineFSymbol) | 
						|
            { | 
						|
                rstStyle = GetLineFillStyle(mSymbol.GetLayer(mSymbol.LayerCount - 1) as LineFSymbol); | 
						|
            } | 
						|
            else if (isExistBackwardDiagonal) | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSBackwardDiagonal; | 
						|
            } | 
						|
            else if (isExistForwardDiagonal) | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSForwardDiagonal; | 
						|
            } | 
						|
            else if (isExistHorizontal) | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSHorizontal; | 
						|
            } | 
						|
            else if (isExistVertical) | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSVertical; | 
						|
            } | 
						|
            else | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSSolid; | 
						|
            } | 
						|
 | 
						|
            //} | 
						|
            //else | 
						|
            //{ | 
						|
            //    LineFSymbol lastFSymbol = null; | 
						|
            //    bool isExistLine = false; | 
						|
            //    for (int i = 0; i < mSymbol.LayerCount; i++) | 
						|
            //    { | 
						|
            //        if (mSymbol.GetLayer(i) is LineFSymbol) | 
						|
            //        { | 
						|
            //            isExistLine = true; | 
						|
            //            lastFSymbol = mSymbol.GetLayer(i) as LineFSymbol; | 
						|
            //        } | 
						|
            //    } | 
						|
            //    if (isExistLine) | 
						|
            //    { | 
						|
            //        rstStyle = GetLineFillStyle(lastFSymbol); | 
						|
            //    } | 
						|
            //    else | 
						|
            //    { | 
						|
            //        rstStyle = Shape2KOTool.XSDClass.esriSimpleFillStyle.esriSFSSolid; | 
						|
            //    } | 
						|
            //} | 
						|
 | 
						|
            return rstStyle; | 
						|
        } | 
						|
 | 
						|
        private Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle GetLineFillStyle(LineFSymbol symbol) | 
						|
        { | 
						|
            Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSSolid; | 
						|
            double angle = symbol.Angle; | 
						|
            if (angle == 0 || Math.Abs(angle) == 180 || Math.Abs(angle) == 360) | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSHorizontal; | 
						|
            } | 
						|
            else if (Math.Abs(angle) == 90 || Math.Abs(angle) == 270) | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSVertical; | 
						|
            } | 
						|
            else if (angle == 45 || angle == 225 || angle == -135 || angle == -315) | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSBackwardDiagonal; | 
						|
            } | 
						|
            else if (angle == 135 || angle == 315 || angle == -45 || angle == -225) | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSForwardDiagonal; | 
						|
            } | 
						|
            else | 
						|
            { | 
						|
                rstStyle = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSSolid; | 
						|
            } | 
						|
            return rstStyle; | 
						|
        } | 
						|
 | 
						|
 | 
						|
        private Symbol GetItemInfoSymbol(FSymbol symbol) | 
						|
        { | 
						|
            Symbol rstSymbol = null; | 
						|
            if (symbol is PFSymbol) | 
						|
            { | 
						|
                PFSymbol pSymbol = symbol as PFSymbol; | 
						|
                if (pSymbol.Outline is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol) | 
						|
                { | 
						|
                    pSymbol.Outline = (pSymbol.Outline as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol).GetLayer(0); | 
						|
                } | 
						|
                rstSymbol = pSymbol; | 
						|
            } | 
						|
            else if (symbol is LineFSymbol) | 
						|
            { | 
						|
                SFSymbol sfSymbol = new SFSymbol(); | 
						|
                LineFSymbol pSymbol = symbol as LineFSymbol; | 
						|
                sfSymbol.Style = GetLineFillStyle(pSymbol); | 
						|
                sfSymbol.Color = pSymbol.Color; | 
						|
                sfSymbol.Outline = pSymbol.Outline; | 
						|
                //if (pSymbol.Outline is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol) | 
						|
                //{ | 
						|
                //    pSymbol.Outline = (pSymbol.Outline as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol).GetLayer(0); | 
						|
                //    sfSymbol.Outline = (pSymbol.Outline as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol).GetLayer(0); | 
						|
                //} | 
						|
 | 
						|
                rstSymbol = sfSymbol; | 
						|
            } | 
						|
            else if (symbol is MFSymbol) | 
						|
            { | 
						|
                MFSymbol pSymbol = symbol as MFSymbol; | 
						|
                if (pSymbol.Outline is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol) | 
						|
                { | 
						|
                    pSymbol.Outline = (pSymbol.Outline as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol).GetLayer(0); | 
						|
                } | 
						|
                rstSymbol = pSymbol; | 
						|
            } | 
						|
            else if (symbol is SFSymbol) | 
						|
            { | 
						|
                SFSymbol pSymbol = symbol as SFSymbol; | 
						|
                if (pSymbol.Outline is Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol) | 
						|
                { | 
						|
                    pSymbol.Outline = (pSymbol.Outline as Kingo.Framework.LayerStyleConvert.XSDClass.MultiLayerLineSymbol).GetLayer(0); | 
						|
                } | 
						|
                rstSymbol = pSymbol; | 
						|
            } | 
						|
            return rstSymbol; | 
						|
        } | 
						|
        #endregion | 
						|
 | 
						|
 | 
						|
        public stdole.IFontDisp GetIFontDisp(ESRIFont font) | 
						|
        { | 
						|
            stdole.StdFontClass fontClass = new stdole.StdFontClass(); | 
						|
            fontClass.Name = font.Family; | 
						|
            fontClass.Size = font.Size; | 
						|
            //fontClass.Weight =Convert. font.Weight; | 
						|
            return (stdole.IFontDisp)fontClass; | 
						|
        } | 
						|
 | 
						|
        public ESRIFont GetESRIFont(stdole.IFontDisp font) | 
						|
        { | 
						|
            if (font == null) return new ESRIFont(); | 
						|
            return new ESRIFont() | 
						|
            { | 
						|
                Size = (int)font.Size, | 
						|
                Family = font.Name | 
						|
            }; | 
						|
        } | 
						|
 | 
						|
        public Kingo.Framework.LayerStyleConvert.XSDClass.Symbol EsriSymbolToCustomSymbol(ESRI.ArcGIS.Display.IFillSymbol esriSymbol) | 
						|
        { | 
						|
            if (esriSymbol == null) return null; | 
						|
            Symbol customSymbol = null; | 
						|
            //if (esriSymbol is ESRI.ArcGIS.Display.SimpleFillSymbolClass) | 
						|
            //{ | 
						|
            //    ESRI.ArcGIS.Display.IFillSymbol fillSymbol = new ESRI.ArcGIS.Display.SimpleFillSymbolClass(); | 
						|
            SFSymbol sfSymbol = new SFSymbol(); | 
						|
            Color color = System.Drawing.ColorTranslator.FromWin32(esriSymbol.Color.RGB); | 
						|
            sfSymbol.Color = new int[] { color.A, color.R, color.G, color.B }; | 
						|
            sfSymbol.Style = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleFillStyle.esriSFSSolid; | 
						|
            if (esriSymbol.Outline != null) | 
						|
            { | 
						|
                SLSymbol slSymbol = new SLSymbol(); | 
						|
                color = ColorTranslator.FromWin32(esriSymbol.Outline.Color.RGB); | 
						|
                slSymbol.Color = new int[] { color.A, color.R, color.G, color.B }; | 
						|
                slSymbol.Width = esriSymbol.Outline.Width; | 
						|
                slSymbol.Style = Kingo.Framework.LayerStyleConvert.XSDClass.esriSimpleLineStyle.esriSLSSolid; | 
						|
                sfSymbol.Outline = slSymbol; | 
						|
            } | 
						|
            customSymbol = sfSymbol; | 
						|
            //} | 
						|
            return customSymbol; | 
						|
        } | 
						|
 | 
						|
        public Image GetSymbolImg() | 
						|
        { | 
						|
            return null; | 
						|
            //stdole.IPictureDisp picture = this.axSymbologyControl.GetStyleClass(this.axSymbologyControl.StyleClass).PreviewItem(pStyleGalleryItem, this.picView.Width, this.picView.Height); | 
						|
            //System.Drawing.Image image = System.Drawing.Image.FromHbitmap(new System.IntPtr(picture.Handle)); | 
						|
            //this.picView.Image = image; | 
						|
        } | 
						|
 | 
						|
        public ESRI.ArcGIS.Display.IColor GetColor(int[] colorInt, bool isNullColor = false) | 
						|
        { | 
						|
            ESRI.ArcGIS.Display.IColor color = null; | 
						|
            if (colorInt != null && colorInt.Length > 3) | 
						|
            { | 
						|
                if (colorInt[3] == 0) | 
						|
                    isNullColor = true; | 
						|
                color = new ESRI.ArcGIS.Display.RgbColorClass() | 
						|
                { | 
						|
                    Red = colorInt[0], | 
						|
                    Green = colorInt[1], | 
						|
                    Blue = colorInt[2], | 
						|
                    NullColor = isNullColor | 
						|
 | 
						|
                }; | 
						|
 | 
						|
 | 
						|
            } | 
						|
            return color; | 
						|
        } | 
						|
 | 
						|
        public int[] GetColorArr(ESRI.ArcGIS.Display.IColor colorArc) | 
						|
        { | 
						|
            if (colorArc == null) return new int[4]; | 
						|
            Color color = System.Drawing.ColorTranslator.FromWin32(colorArc.RGB); | 
						|
            return Kingo.Framework.LayerStyleConvert.XSDClass.CommonMethod.GetInt4ColorFromColor(color); | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 获取渲染 | 
						|
        /// </summary> | 
						|
        /// <param name="customSymbol">样式</param> | 
						|
        /// <param name="symbolType">图形类型</param> | 
						|
        /// <returns></returns> | 
						|
        public ISimpleRenderer GetSimpleRenderer(Kingo.Framework.LayerStyleConvert.XSDClass.Symbol customSymbol, SymbolTypeEnum symbolType) | 
						|
        { | 
						|
            ISymbol symbolDefault = null; | 
						|
            if (customSymbol == null) | 
						|
                symbolDefault = GetDefaultSymbol(symbolType); | 
						|
            else | 
						|
                symbolDefault = CustomSymbolToEsriSymbol(customSymbol) as ISymbol; | 
						|
            // } | 
						|
            //简单填充符号 | 
						|
            ISimpleRenderer simpleRender = new SimpleRendererClass(); | 
						|
            simpleRender.Symbol = symbolDefault as ISymbol; | 
						|
            simpleRender.Label = ""; | 
						|
            simpleRender.Description = "简单渲染"; | 
						|
 | 
						|
            return simpleRender; | 
						|
        } | 
						|
 | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 获取唯一值图层渲染 | 
						|
        /// </summary> | 
						|
        /// <param name="rander"></param> | 
						|
        /// <param name="symbolType"></param> | 
						|
        /// <returns></returns> | 
						|
        public IUniqueValueRenderer GetUniqueValueRenderer(Kingo.Framework.LayerStyleConvert.XSDClass.Renderer rander, SymbolTypeEnum symbolType) | 
						|
        { | 
						|
 | 
						|
            Framework.LayerStyleConvert.XSDClass.UniqueValueRenderer uniqueRaner = (rander as Framework.LayerStyleConvert.XSDClass.UniqueValueRenderer); | 
						|
 | 
						|
            Symbol customSymbol = uniqueRaner.DefaultSymbol; | 
						|
            ISymbol symbolDefault = null; | 
						|
            if (customSymbol == null) | 
						|
                symbolDefault = GetDefaultSymbol(symbolType); | 
						|
            else | 
						|
                symbolDefault = CustomSymbolToEsriSymbol(customSymbol) as ISymbol; | 
						|
 | 
						|
              | 
						|
 | 
						|
            //填充符号 | 
						|
            IUniqueValueRenderer uniqueValueRender = new UniqueValueRendererClass(); | 
						|
            uniqueValueRender.UseDefaultSymbol = false; | 
						|
            uniqueValueRender.DefaultSymbol= symbolDefault as ISymbol; | 
						|
            uniqueValueRender.DefaultLabel = uniqueRaner.DefaultLabel; | 
						|
            uniqueValueRender.FieldCount = 1; | 
						|
            uniqueValueRender.set_Field(0, uniqueRaner.Field1); | 
						|
            //uniqueValueRender.set_Field(1, uniqueRaner.Field2); | 
						|
            //uniqueValueRender.set_Field(2, uniqueRaner.Field3); | 
						|
            uniqueValueRender.FieldDelimiter = uniqueRaner.FieldDelimiter; | 
						|
 | 
						|
        | 
						|
            for (int i = 0; i < uniqueRaner.UniqueValueInfos.Count; i++) | 
						|
            { | 
						|
                Kingo.Framework.LayerStyleConvert.XSDClass.UniqueValueInfo unqiueInfo = uniqueRaner.UniqueValueInfos[i]; | 
						|
                uniqueValueRender.AddValue(unqiueInfo.Value, "", CustomSymbolToEsriSymbol(unqiueInfo.Symbol)); | 
						|
                uniqueValueRender.Label[unqiueInfo.Value] = unqiueInfo.Label; | 
						|
                uniqueValueRender.Description[unqiueInfo.Value] = unqiueInfo.Description; | 
						|
            } | 
						|
 | 
						|
            return uniqueValueRender; | 
						|
        } | 
						|
 | 
						|
        #region  默认样式 | 
						|
 | 
						|
        public ISymbol GetDefaultSymbol(SymbolTypeEnum symbolType) | 
						|
        { | 
						|
            if (symbolType == SymbolTypeEnum.Point) | 
						|
            { | 
						|
                return DefaultMarkerSymbol() as ISymbol; | 
						|
            } | 
						|
            else if (symbolType == SymbolTypeEnum.Line) | 
						|
            { | 
						|
                return DefaultLineSymbol() as ISymbol; | 
						|
            } | 
						|
            else | 
						|
            { | 
						|
                return DefaultFillSymbol() as ISymbol; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 获取默认填充样式 | 
						|
        /// </summary> | 
						|
        /// <returns></returns> | 
						|
        public IFillSymbol DefaultFillSymbol() | 
						|
        { | 
						|
            ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbolClass(); | 
						|
            simpleFillSymbol.Style = ESRI.ArcGIS.Display.esriSimpleFillStyle.esriSFSSolid; | 
						|
            simpleFillSymbol.Color = getRGB(0, 255, 255); | 
						|
            //创建边线符号 | 
						|
            ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass(); | 
						|
            simpleLineSymbol.Style = ESRI.ArcGIS.Display.esriSimpleLineStyle.esriSLSSolid; | 
						|
            simpleLineSymbol.Color = getRGB(255, 0, 0); | 
						|
            simpleFillSymbol.Outline = simpleLineSymbol; | 
						|
            return simpleFillSymbol; | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 获取默认线样式 | 
						|
        /// </summary> | 
						|
        /// <returns></returns> | 
						|
        public ILineSymbol DefaultLineSymbol() | 
						|
        { | 
						|
            ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass(); | 
						|
            simpleLineSymbol.Style = ESRI.ArcGIS.Display.esriSimpleLineStyle.esriSLSSolid; | 
						|
            simpleLineSymbol.Color = getRGB(255, 0, 0); | 
						|
            return simpleLineSymbol; | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 获取默认点样式 | 
						|
        /// </summary> | 
						|
        /// <returns></returns> | 
						|
        public IMarkerSymbol DefaultMarkerSymbol() | 
						|
        { | 
						|
            IMarkerSymbol markerSymbol = new SimpleMarkerSymbolClass(); | 
						|
            markerSymbol.Angle = 0; | 
						|
            markerSymbol.Color = getRGB(255, 0, 0); | 
						|
            markerSymbol.Size = 4; | 
						|
            return markerSymbol; | 
						|
        } | 
						|
 | 
						|
        private IRgbColor getRGB(int r, int g, int b) | 
						|
        { | 
						|
            IRgbColor pColor; | 
						|
            pColor = new RgbColorClass(); | 
						|
            pColor.Red = r; | 
						|
            pColor.Green = g; | 
						|
            pColor.Blue = b; | 
						|
            return pColor; | 
						|
        } | 
						|
        #endregion | 
						|
 | 
						|
        #region 标注样式 | 
						|
 | 
						|
        /// <summary> | 
						|
        ///标注ESRI样式转自定义样式 | 
						|
        /// </summary> | 
						|
        /// <param name="symbol"></param> | 
						|
        /// <returns></returns> | 
						|
        public TSSymbol EsriTextSymbolToCustomTSSymbol(ESRI.ArcGIS.Display.ISymbol symbol) | 
						|
        { | 
						|
            TSSymbol customSymbol = new TSSymbol(); | 
						|
            try | 
						|
            { | 
						|
                ESRI.ArcGIS.Display.TextSymbol textSymbol = symbol as ESRI.ArcGIS.Display.TextSymbol; | 
						|
                if (textSymbol == null) return customSymbol; | 
						|
                customSymbol.Angle = (int)textSymbol.Angle; | 
						|
                customSymbol.Color = GetColorArr(textSymbol.Color); | 
						|
                customSymbol.Font = GetESRIFont(textSymbol.Font); | 
						|
                customSymbol.Kerning = textSymbol.Kerning; | 
						|
                customSymbol.RightToLeft = textSymbol.RightToLeft; | 
						|
                customSymbol.HorizontalAlignment = textSymbol.HorizontalAlignment.ToString(); | 
						|
                customSymbol.VerticalAlignment = textSymbol.VerticalAlignment.ToString(); | 
						|
                customSymbol.Xoffset = (int)textSymbol.ShadowXOffset; | 
						|
                customSymbol.Yoffset = (int)textSymbol.ShadowYOffset; | 
						|
                customSymbol.HaloSize = textSymbol.Size.ToString(); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                throw ex; | 
						|
            } | 
						|
            return customSymbol; | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 标注自定义样式转ESRI样式 | 
						|
        /// </summary> | 
						|
        /// <param name="symbol"></param> | 
						|
        /// <returns></returns> | 
						|
        public ESRI.ArcGIS.Display.TextSymbol CustomTSSymbolToEsriTextSymbol(TSSymbol symbol) | 
						|
        { | 
						|
            ESRI.ArcGIS.Display.TextSymbol esriSymbol = new TextSymbol(); | 
						|
            try | 
						|
            { | 
						|
                esriSymbol.Angle = symbol.Angle; | 
						|
                esriSymbol.Color = GetColor(symbol.Color); | 
						|
                esriSymbol.Font = GetIFontDisp(symbol.Font); | 
						|
                esriSymbol.Kerning = symbol.Kerning; | 
						|
                esriSymbol.RightToLeft = symbol.RightToLeft; | 
						|
                esriSymbol.ShadowXOffset = symbol.Xoffset; | 
						|
                esriSymbol.ShadowYOffset = symbol.Yoffset; | 
						|
 | 
						|
                object obj = GetesriTextHorizontalAlignmentByName(typeof(esriTextHorizontalAlignment), symbol.HorizontalAlignment); | 
						|
                esriSymbol.HorizontalAlignment = obj == null ? esriTextHorizontalAlignment.esriTHACenter : (esriTextHorizontalAlignment)obj; | 
						|
                obj = GetesriTextHorizontalAlignmentByName(typeof(esriTextVerticalAlignment), symbol.VerticalAlignment); | 
						|
                esriSymbol.VerticalAlignment = obj == null ? esriTextVerticalAlignment.esriTVACenter : (esriTextVerticalAlignment)obj; | 
						|
 | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
 | 
						|
                throw ex; | 
						|
            } | 
						|
            return esriSymbol; | 
						|
        } | 
						|
 | 
						|
        private object GetesriTextHorizontalAlignmentByName(Type type, string name) | 
						|
        { | 
						|
            string[] enumNames = Enum.GetNames(type); | 
						|
            object objRst = null; | 
						|
            for (int i = 0; i < enumNames.Length; i++) | 
						|
            { | 
						|
                if (enumNames[i] == name) | 
						|
                { | 
						|
                    objRst = Enum.Parse(type, name, true); | 
						|
                    break; | 
						|
                } | 
						|
            } | 
						|
            return objRst; | 
						|
        } | 
						|
        #endregion | 
						|
    } | 
						|
 | 
						|
    public class ConvertImg : System.Windows.Forms.AxHost | 
						|
    { | 
						|
        private ConvertImg() | 
						|
            : base(null) | 
						|
        { | 
						|
        } | 
						|
 | 
						|
        public static stdole.IPictureDisp Convert(System.Drawing.Image image) | 
						|
        { | 
						|
            return (stdole.IPictureDisp)System. | 
						|
                Windows.Forms.AxHost | 
						|
                .GetIPictureDispFromPicture(image); | 
						|
        } | 
						|
 | 
						|
        public static Image IPictureDispToImage(stdole.IPictureDisp pictureDisp) | 
						|
        { | 
						|
            return GetPictureFromIPictureDisp(pictureDisp); | 
						|
 | 
						|
 | 
						|
        } | 
						|
    } | 
						|
 | 
						|
    /// <summary> | 
						|
    /// 图形类型 | 
						|
    /// </summary> | 
						|
    public enum SymbolTypeEnum | 
						|
    { | 
						|
        Point = 0, | 
						|
        Line = 1, | 
						|
        Fill = 2 | 
						|
    } | 
						|
} | 
						|
  |