ArcGis与.net颜色转换
/// <summary> 将.NET中的Color结构转换至于ArcGIS Engine中的IColor接口 /// </summary> /// <param name="color">.NET中的System.Drawing.Color结构表示ARGB颜色</param> /// <returns>ArcGIS Egnine中的IColor接口</returns> public static IColor ConvertColorToIColor(Color color) { IColor pColor = new RgbColorClass(); pColor.RGB = color.B * 65536 + color.G * 256 + color.R; return pColor; } 经网友推荐,还可以采用自带的ColorTranslator方法如下: int i= ColorTranslator.ToOle(colorDlg.Color); pColor.RGB = i; 测试可用,原理和第一种方法一样。 #region 将ArcGIS Engine中的IRgbColor接口转换至.NET中的Color结构 /// < summary> /// 将ArcGIS Engine中的IRgbColor接口转换至.NET中的Color结构 /// < /summary> /// < param name="pRgbColor">IRgbColor< /param> /// < returns>.NET中的System.Drawing.Color结构表示ARGB颜色< /returns> public static Color ConvertIRgbColorToColor(IRgbColor pRgbColor) { return ColorTranslator.FromOle(pRgbColor.RGB); } #endregion //从调色板获取颜色 Color pDotBackColor; ColorDialog ColorDialog1 = new ColorDialog(); ColorDialog1.AllowFullOpen = true; ColorDialog1.FullOpen = true; //设定此颜色对话框存在"帮助"按钮,缺省是没有的 ColorDialog1.ShowHelp = true; // 设定此颜色对话框的初始颜色,所以如果在对话框中选择"取消",则此对话框会重新此颜色 ColorDialog1.Color = Color.DarkBlue; if (ColorDialog1.ShowDialog() != DialogResult.Cancel) { pDotBackColor = ColorDialog1.Color; btnDotBackColor.BackColor = pDotBackColor; } //将Color接口转为Icolor接口 IColor color = (IColor)ESRI.ArcGIS.ADF.Converter.ToRGBColor(pDotBackColor); IFillSymbol pFillSymbol = new SimpleFillSymbolClass(); //将color赋予pFillSymbol pFillSymbol.color=color; |
转自:http://changqingnew.blog.163.com/blog/static/10752338201001010323518/