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.
		
		
		
		
		
			
		
			
				
					
					
						
							99 lines
						
					
					
						
							3.2 KiB
						
					
					
				
			
		
		
	
	
							99 lines
						
					
					
						
							3.2 KiB
						
					
					
				using ESRI.ArcGIS.Display; | 
						|
using KGIS.Framework.Utils; | 
						|
using Kingo.Framework.LayerStyleConvert.XSDClass; | 
						|
using stdole; | 
						|
using System; | 
						|
using System.Collections.Generic; | 
						|
using System.Linq; | 
						|
using System.Text; | 
						|
using System.Threading.Tasks; | 
						|
 | 
						|
namespace Kingo.Framework.LayerStyleConvert.Common | 
						|
{ | 
						|
    public class AnnotationConvret | 
						|
    { | 
						|
        private static AnnotationConvret _instance = null; | 
						|
        static object lockObj = new object(); | 
						|
        public static AnnotationConvret Instance() | 
						|
        { | 
						|
            lock (lockObj) | 
						|
            { | 
						|
                if (_instance == null) | 
						|
                    _instance = new AnnotationConvret(); | 
						|
            } | 
						|
            return _instance; | 
						|
        } | 
						|
 | 
						|
        public SimpleTextSymbol GetTextSymbol(ESRI.ArcGIS.Display.ITextSymbol textSymbol) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                SimpleTextSymbol simpleTextSymbol = null; | 
						|
                if (textSymbol != null) | 
						|
                { | 
						|
                    simpleTextSymbol = new SimpleTextSymbol | 
						|
                    { | 
						|
                        Color = GetInt4ColorFromColor(textSymbol.Color as ESRI.ArcGIS.Display.IRgbColor), | 
						|
                        Angle = textSymbol.Angle, | 
						|
                        FontDisp = GetFontDispFromFont(textSymbol.Font) | 
						|
                    }; | 
						|
                } | 
						|
                return simpleTextSymbol; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug("获取标注样式异常:" + ex.Message); | 
						|
                return null; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        public ESRI.ArcGIS.Display.ITextSymbol GetSimpleTextSymbol(SimpleTextSymbol simpleTextSymbol) | 
						|
        { | 
						|
            ESRI.ArcGIS.Display.ITextSymbol textSymbol = null; | 
						|
            if (simpleTextSymbol != null) | 
						|
            { | 
						|
                IRgbColor pRgbColor = new RgbColor | 
						|
                { | 
						|
                    Red = simpleTextSymbol.Color[0],// | 
						|
                    Green = simpleTextSymbol.Color[1], | 
						|
                    Blue = simpleTextSymbol.Color[2], | 
						|
                }; | 
						|
                IFontDisp pFontDisp = new StdFont() as IFontDisp; | 
						|
                pFontDisp.Bold = simpleTextSymbol.FontDisp.FontBold;//黑体 | 
						|
                pFontDisp.Name = simpleTextSymbol.FontDisp.FontName; | 
						|
                pFontDisp.Size = simpleTextSymbol.FontDisp.FontSize; | 
						|
                textSymbol = new TextSymbol | 
						|
                { | 
						|
                    Angle = simpleTextSymbol.Angle, | 
						|
                    Color = pRgbColor, | 
						|
                    Font = pFontDisp | 
						|
                }; | 
						|
            } | 
						|
            return textSymbol; | 
						|
        } | 
						|
 | 
						|
        public static FontDisp GetFontDispFromFont(IFontDisp fontDisp) | 
						|
        { | 
						|
            FontDisp font = null; | 
						|
            if (fontDisp != null) | 
						|
            { | 
						|
                font = new FontDisp(); | 
						|
                font.FontBold = fontDisp.Bold; | 
						|
                font.FontName = fontDisp.Name; | 
						|
                font.FontSize = fontDisp.Size; | 
						|
            } | 
						|
            return font; | 
						|
        } | 
						|
 | 
						|
        public static int[] GetInt4ColorFromColor(ESRI.ArcGIS.Display.IRgbColor color) | 
						|
        { | 
						|
            int[] array = new int[4]; | 
						|
            if (color == null) return array; | 
						|
            array[0] = (int)color.Red; | 
						|
            array[1] = (int)color.Green; | 
						|
            array[2] = (int)color.Blue; | 
						|
            array[3] = 0; | 
						|
            return array; | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |