第四章 图层符号

  AE9.3 提供了SymbologyControl控件,用于显示ARCGIS符号库中的符号。   组件库中的组件对象分为Color(颜色),Symbol(符号),Render(渲染)三大系列,图层符号化就是通过多个组件对象来合作完成的
4.3 符号化Color(颜色)体系 4.3.1 ArcGIS 颜色模型  

  ArcGIS提供的颜色模型有: RGB、CMY(青、洋红、黄),HSV(色彩、纯度、明度),Gray(灰度级),HLS(色相、亮度、饱和度)   由此延伸出,Color抽象类的 5个子类:CmykColor,RGBColor,HSVColor,HLSColor,GrayColor;   AE中常用的是RGB和HSV,RGB类实现IRgbColor接口,HSV类实现IHsvColor接口   程序中常用的 GetRGB方法,就是用来构建一个RGBColor对象的
4.3.2 COlorRamp对象

  一个图层有上百种颜色时,不能逐个产生,因此AE提供了ColorRamp对象   ColorRamp类的对象可以产生颜色带,实现了IColorRamp接口,它定义的属性如:Size(产生多少种颜色),Colors(颜色带IEnumColor)
  ColorRamp类是一个抽象类,子类包括4种:   RandomColorRamp(随机颜色带):使用HSV颜色模型来确定一串颜色;   PresetColorRamp(预设颜色带):预设的颜色模式,可存储13种颜色;   AlgorithmicColorRamp(起止颜色带):用起始颜色、终止颜色确定一个颜色带,起始、终止颜色使用HSV模型   MultiPartColorRamp(叠加颜色带):叠加产生颜色带           生成颜色带实例: 接下来制作一个实例演示AlgorithmicColorRamp的Demo:

  在WinForm窗体中,创建如下界面:

  接下来编写如下代码:

  1. 1 using System;
  2. 2 using System.Collections.Generic;
  3. 3 using System.ComponentModel;
  4. 4 using System.Data;
  5. 5 using System.Drawing;
  6. 6 using System.Linq;
  7. 7 using System.Text;
  8. 8 using System.Windows.Forms;
  9. 9 using ESRI.ArcGIS.Display;
  10. 10
  11. 11 namespace TM_A_Project
  12. 12 {
  13. 13     public partial class AlgorithmicColorRamp演示 : Form
  14. 14     {
  15. 15         public AlgorithmicColorRamp演示()
  16. 16         {
  17. 17             InitializeComponent();
  18. 18         }
  19. 19
  20. 20         private void btnCreateColorRamp_Click(object sender, EventArgs e)
  21. 21         {
  22. 22             // 创建一个新AlgorithmicColorRampClass对象
  23. 23             IAlgorithmicColorRamp algColorRamp = new AlgorithmicColorRampClass();
  24. 24             // 创建起始颜色对象
  25. 25             IRgbColor startColor = GetRGBColor(255, 0, 0);
  26. 26
  27. 27             // 创建终止颜色
  28. 28             IRgbColor endColor = GetRGBColor(0, 255, 0);
  29. 29
  30. 30             // 设置AlgorithmicColorRampClass的起止颜色属性
  31. 31             algColorRamp.ToColor = startColor;
  32. 32             algColorRamp.FromColor = endColor;
  33. 33             // 设置梯度类型
  34. 34 algColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm;
  35. 35             // 设置颜色带颜色数量
  36. 36             algColorRamp.Size = 5;
  37. 37             // 创建颜色带
  38. 38             bool bture = true;
  39. 39             algColorRamp.CreateRamp(out bture);
  40. 40             // 使用IEnumColors获取颜色带
  41. 41             IEnumColors pEnumColors = null;
  42. 42             pEnumColors = algColorRamp.Colors;
  43. 43             // 设置5个picturebox的背景色为产生颜色带的5个颜色
  44. 44             this.pictureBox1.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);
  45. 45             this.pictureBox2.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);
  46. 46             this.pictureBox3.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);
  47. 47             this.pictureBox4.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);
  48. 48             this.pictureBox5.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);
  49. 49         }
  50. 50
  51. 51         private IRgbColor GetRGBColor(int r, int g, int b)
  52. 52         {
  53. 53             IRgbColor rgbColor = new RgbColorClass();
  54. 54             rgbColor.Red = r;
  55. 55             rgbColor.Green = g;
  56. 56             rgbColor.Blue = b;
  57. 57             return rgbColor;
  58. 58         }
  59. 59     }
  60. 60 }
 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 using ESRI.ArcGIS.Display;
10
11 namespace TM_A_Project
12 {
13 public partial class AlgorithmicColorRamp演示 : Form
14 {
15 public AlgorithmicColorRamp演示()
16 {
17 InitializeComponent();
18 }
19
20 private void btnCreateColorRamp_Click(object sender, EventArgs e)
21 {
22 // 创建一个新AlgorithmicColorRampClass对象
23 IAlgorithmicColorRamp algColorRamp = new AlgorithmicColorRampClass();
24 // 创建起始颜色对象
25 IRgbColor startColor = GetRGBColor(255, 0, 0);
26
27 // 创建终止颜色
28 IRgbColor endColor = GetRGBColor(0, 255, 0);
29
30 // 设置AlgorithmicColorRampClass的起止颜色属性
31 algColorRamp.ToColor = startColor;
32 algColorRamp.FromColor = endColor;
33 // 设置梯度类型
34 algColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm;
35 // 设置颜色带颜色数量
36 algColorRamp.Size = 5;
37 // 创建颜色带
38 bool bture = true;
39 algColorRamp.CreateRamp(out bture);
40 // 使用IEnumColors获取颜色带
41 IEnumColors pEnumColors = null;
42 pEnumColors = algColorRamp.Colors;
43 // 设置5个picturebox的背景色为产生颜色带的5个颜色
44 this.pictureBox1.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);
45 this.pictureBox2.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);
46 this.pictureBox3.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);
47 this.pictureBox4.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);
48 this.pictureBox5.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);
49 }
50
51 private IRgbColor GetRGBColor(int r, int g, int b)
52 {
53 IRgbColor rgbColor = new RgbColorClass();
54 rgbColor.Red = r;
55 rgbColor.Green = g;
56 rgbColor.Blue = b;
57 return rgbColor;
58 }
59 }
60 }

  执行效果如下图所示:

  RandomColorRamp对象产生随机颜色带,RandomColorRamp也需要设定一个范围,但这个范围是HSV颜色模型的,颜色将在这个范围内随机出现   RandomColorRamp实现了 IRandomColorRamp接口。

  以下是生成RandomColorRamp的代码段:

  1. 1         // 以下是生成RandomColorRamp的代码段
  2. 2         public void CreateRandomColorRamp()
  3. 3         {
  4. 4             IRandomColorRamp pRandomColorRamp = new RandomColorRampClass();
  5. 5             // 制作一系列介于橘黄色和蓝绿色之间的随机颜色
  6. 6             pRandomColorRamp.StartHue = 40;
  7. 7             pRandomColorRamp.EndHue = 120;
  8. 8             pRandomColorRamp.MinValue = 65;
  9. 9             pRandomColorRamp.MaxValue = 90;
  10. 10             pRandomColorRamp.MinSaturation = 25;
  11. 11             pRandomColorRamp.MaxSaturation = 45;
  12. 12             pRandomColorRamp.Size = 20;
  13. 13             pRandomColorRamp.Seed = 23;
  14. 14             bool btrue = true;
  15. 15             pRandomColorRamp.CreateRamp(out btrue);
  16. 16
  17. 17             IEnumColors pEnumColors = pRandomColorRamp.Colors;
  18. 18
  19. 19             // 接下来对pEnumColors进行操作即可  pEnumColors.Next().RGB
  20. 20         }
 1         // 以下是生成RandomColorRamp的代码段
2 public void CreateRandomColorRamp()
3 {
4 IRandomColorRamp pRandomColorRamp = new RandomColorRampClass();
5 // 制作一系列介于橘黄色和蓝绿色之间的随机颜色
6 pRandomColorRamp.StartHue = 40;
7 pRandomColorRamp.EndHue = 120;
8 pRandomColorRamp.MinValue = 65;
9 pRandomColorRamp.MaxValue = 90;
10 pRandomColorRamp.MinSaturation = 25;
11 pRandomColorRamp.MaxSaturation = 45;
12 pRandomColorRamp.Size = 20;
13 pRandomColorRamp.Seed = 23;
14 bool btrue = true;
15 pRandomColorRamp.CreateRamp(out btrue);
16
17 IEnumColors pEnumColors = pRandomColorRamp.Colors;
18
19 // 接下来对pEnumColors进行操作即可 pEnumColors.Next().RGB
20 }

4.4 符号化Symbol体系   AE9.3 为开发人员提供了32种符号,主要分为三大类:   1) MarkerSymbol(点符号),LineSymbol(线符号)和FillSymbol(填充符号)来绘制地理要素的几何图形   2)TextSymbol ,用于文字标注   3) 3D Chart 符号,用于显示饼图等三维对象

4.4.1 MarkerSymbol 对象   MarkerSymbol 用于修饰点对象的符号,它拥有13个子类,不同子类用于产生不同类型的点符号。   所有的MarkerSymbol类都实现了IMarkerSymbol接口,该接口定义了标记符号的方法、属性,如 角度、颜色、大小和X,Y偏移量等           以下代码段用来创建 SimpleMarkerSymbol 类型符号

  1. 1         public void CreateSimpleMarkerSymbol()
  2. 2         {
  3. 3             // 创建SimpleMarkerSymbolClass对象
  4. 4             ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbolClass();
  5. 5             // 创建RgbColorClass对象为SimpleMarkerSymbol设置颜色
  6. 6             IColor pRgbColor = GetRgbColor(255, 0, 0);
  7. 7             pSimpleMarkerSymbol.Color = pRgbColor;
  8. 8             // 设置pSimpleMarkerSymbol对象的符号类型,选择钻石
  9. 9             pSimpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSDiamond;
  10. 10             // 设置pSimpleMarkerSymbol对象大小,设置为5
  11. 11             pSimpleMarkerSymbol.Size = 5;
  12. 12             // 显示外框线
  13. 13             pSimpleMarkerSymbol.Outline = true;
  14. 14             // 为外框线设置颜色
  15. 15             pSimpleMarkerSymbol.OutlineColor = GetRgbColor(0, 255, 0);
  16. 16             // 设置外框线的宽度
  17. 17             pSimpleMarkerSymbol.OutlineSize = 1;
  18. 18         }
 1         public void CreateSimpleMarkerSymbol()
2 {
3 // 创建SimpleMarkerSymbolClass对象
4 ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbolClass();
5 // 创建RgbColorClass对象为SimpleMarkerSymbol设置颜色
6 IColor pRgbColor = GetRgbColor(255, 0, 0);
7 pSimpleMarkerSymbol.Color = pRgbColor;
8 // 设置pSimpleMarkerSymbol对象的符号类型,选择钻石
9 pSimpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSDiamond;
10 // 设置pSimpleMarkerSymbol对象大小,设置为5
11 pSimpleMarkerSymbol.Size = 5;
12 // 显示外框线
13 pSimpleMarkerSymbol.Outline = true;
14 // 为外框线设置颜色
15 pSimpleMarkerSymbol.OutlineColor = GetRgbColor(0, 255, 0);
16 // 设置外框线的宽度
17 pSimpleMarkerSymbol.OutlineSize = 1;
18 }

  在介绍Renderer对象时,会演示 用创建的点符号符号化一个图层。

4.4.2 LineSymbol 对象

  LineSymbol对象,用于修饰线性几何对象的符号。它拥有8个子类,用于产生不同类型的线符号。   实现了ILineSymbol接口,该接口包含Color和Width属性   以下代码段,演示如何创建一个MakerLineSymbol线符号

  1. 1         public void CreateLineSymbol()
  2. 2         {
  3. 3             IArrowMarkerSymbol pArrowMarker = new ArrowMarkerSymbolClass();
  4. 4             pArrowMarker.Color = GetRgbColor(255, 0, 0);
  5. 5             pArrowMarker.Length = 10;
  6. 6             pArrowMarker.Width = 8;
  7. 7             pArrowMarker.Style = esriArrowMarkerStyle.esriAMSPlain;
  8. 8
  9. 9             IMarkerLineSymbol pMarkerLine = new MarkerLineSymbolClass();
  10. 10             pMarkerLine.MarkerSymbol = pArrowMarker;
  11. 11             pMarkerLine.Color = GetRgbColor(0, 0, 255);
  12. 12
  13. 13         }
 1         public void CreateLineSymbol()
2 {
3 IArrowMarkerSymbol pArrowMarker = new ArrowMarkerSymbolClass();
4 pArrowMarker.Color = GetRgbColor(255, 0, 0);
5 pArrowMarker.Length = 10;
6 pArrowMarker.Width = 8;
7 pArrowMarker.Style = esriArrowMarkerStyle.esriAMSPlain;
8
9 IMarkerLineSymbol pMarkerLine = new MarkerLineSymbolClass();
10 pMarkerLine.MarkerSymbol = pArrowMarker;
11 pMarkerLine.Color = GetRgbColor(0, 0, 255);
12
13 }

4.4.3 FillSymbol 对象

  FillSymbol对象,用来修改如多边形等具有面积的几何形体的符号对象,有11个子类,实现了IFillSymbol接口,有Color和OutLine属性   以下代码段,演示如何创建一个SimpleFillSymbol线符号

  1. 1         public void CreateFillSymbol()
  2. 2         {
  3. 3             // 为填充符号创建外框线符号
  4. 4             ICartographicLineSymbol pCartoLineSymbol = new CartographicLineSymbolClass();
  5. 5             pCartoLineSymbol.Width = 2;
  6. 6             pCartoLineSymbol.Color = GetRgbColor(255, 0, 0);
  7. 7             // 创建一个填充符号
  8. 8             ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();
  9. 9             // 设置填充符号的属性
  10. 10             IFillSymbol pFillSymbol = pSimpleFillSymbol;
  11. 11             pFillSymbol.Color = GetRgbColor(0, 255, 0);
  12. 12             pFillSymbol.Outline = pCartoLineSymbol;// 设置边框线
  13. 13         }
 1         public void CreateFillSymbol()
2 {
3 // 为填充符号创建外框线符号
4 ICartographicLineSymbol pCartoLineSymbol = new CartographicLineSymbolClass();
5 pCartoLineSymbol.Width = 2;
6 pCartoLineSymbol.Color = GetRgbColor(255, 0, 0);
7 // 创建一个填充符号
8 ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();
9 // 设置填充符号的属性
10 IFillSymbol pFillSymbol = pSimpleFillSymbol;
11 pFillSymbol.Color = GetRgbColor(0, 255, 0);
12 pFillSymbol.Outline = pCartoLineSymbol;// 设置边框线
13 }

4.4.4 TextSymbol 对象

  TextSymbol对象,用于修饰文字元素,文字元素在要素标注等方面很有用。   TextSymbol符号最重要的设置对象是它的字符,它实现了三个主要的接口来设置字符:ITextSymbol、ISimpleTextSymbol和IFormattedTextSymbol     ITextSymbol: 是定义文本字符样式额主要接口,它定义的ITextSymbol::Font属性,是产生一个TextSymbol符号的关键,       可以使用IFontDisp接口来设置字体的大小和是否是粗体、倾斜等属性,     ITextSymbol接口还可以定义TextSymbol对象的颜色、角度、水平排列方式、垂直排列方式和文本等内容。

  以下是一个构建TextSymbol 的函数:

  1. 1         /// <summary>
  2. 2         /// 生成文本符号
  3. 3         /// </summary>
  4. 4         /// <param name="pTxtSymbol">文本符号</param>
  5. 5         /// <param name="sFontName">字体名称</param>
  6. 6         /// <param name="iFont">字体大小</param>
  7. 7         /// <param name="iColor">字体颜色</param>
  8. 8         public void MakeTextSymbol(ref ITextSymbol pTxtSymbol, string sFontName, int iFont, int iColor)
  9. 9         {
  10. 10             try
  11. 11             {
  12. 12                 pTxtSymbol.Font.Name = sFontName;
  13. 13                 pTxtSymbol.Font.Size = (decimal)iFont;
  14. 14                 IRgbColor pRgbColor = new RgbColorClass();
  15. 15                 pRgbColor.RGB = iColor;
  16. 16                 pTxtSymbol.Color = (IColor)pRgbColor;
  17. 17                 pTxtSymbol.Angle = 0;
  18. 18                 pTxtSymbol.RightToLeft = false;
  19. 19                 pTxtSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHACenter;
  20. 20                 pTxtSymbol.VerticalAlignment = esriTextVerticalAlignment.esriTVABaseline;
  21. 21             }
  22. 22             catch (Exception)
  23. 23             {
  24. 24                 throw;
  25. 25             }
  26. 26         }
 1         /// <summary>
2 /// 生成文本符号
3 /// </summary>
4 /// <param name="pTxtSymbol">文本符号</param>
5 /// <param name="sFontName">字体名称</param>
6 /// <param name="iFont">字体大小</param>
7 /// <param name="iColor">字体颜色</param>
8 public void MakeTextSymbol(ref ITextSymbol pTxtSymbol, string sFontName, int iFont, int iColor)
9 {
10 try
11 {
12 pTxtSymbol.Font.Name = sFontName;
13 pTxtSymbol.Font.Size = (decimal)iFont;
14 IRgbColor pRgbColor = new RgbColorClass();
15 pRgbColor.RGB = iColor;
16 pTxtSymbol.Color = (IColor)pRgbColor;
17 pTxtSymbol.Angle = 0;
18 pTxtSymbol.RightToLeft = false;
19 pTxtSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHACenter;
20 pTxtSymbol.VerticalAlignment = esriTextVerticalAlignment.esriTVABaseline;
21 }
22 catch (Exception)
23 {
24 throw;
25 }
26 }

4.4.5 3DChartSymbol 对象

  3DChartSymbol 是一个抽象类,子类有:BarChart,PieChart和StackedChart   BarChartSymbol 是最常用的三维着色符号,不同类型的柱子代表一个要素类中不同的属性,柱子的高度取决于属性值的大小   PieChartSymbol 符号进行着色的方法是使用一个饼图来显示不同要素类中的不同属性,不同的属性按照他们的数值大小战友一个饼图中的不同比例的扇形区域

4.5 使用ServerStyle符号

  在ArcGIS Desktop中,我们使用的是Style符号库,相对应的在AE开发中,就是ServerStyle符号库   如何获取符号库中的符号? 举个栗子: 获取ESIR符号库中名称为Rose的符号:     1、首先构建一个ServerStyleGallery对象     2、其次使用IStyleGalleryStorage接口的AddFile()方法,加载ServerStyle文件(接口对象AddFile()方法会得到ServerStyleGallery对象?)     3、遍历ServerGallery中的Class,如果是FIllSymbol,则使用IStyleGallery的GetItems()方法,          返回一个可枚举的包含一系列StyleGalleryItem的EnumStyleGalleryItem对象     4、遍历EnumServerStyleGalleryItem枚举对象中的StyleGalleryItem如果名称是Rose,即可获取ESRI符号库中名称为Rose的StylegalleryITem     5、然后通过IStyleGalleryItem的ITem属性即可转换为Isymbol。

4.6 SymbologyControl控件   SymbologyControl用来显示ServerSTyle符号库中的符号样式,可以选择在该控件上选择一个符号用来符号化一个图层或者作为一个Element的符号   使用SymbologyControl可以再设计的模式下,再其属性页中加载ServerStyle符号库文件,   同样,可以使用LoadStyleFile和RemoveFile方法加载和移除ServerStyle符号库文件
4.7 符号化 之 Renderer(渲染)体系

  AE 9.3 对GIS数据的符号化分为矢量数据渲染和栅格数据渲染两大类:FEatureRender和RasterRender
4.7.1 FeatureRender对象:

  抽象类,有15个子类,负责进行不同类型的着色运算。   都实现了IFeatureRenderer接口,该接口定义了 进行要素图层符号化的公共属性和方法   通过IGeoFeatureLayer.Renderer属性,获取一个要素图层的符号化对象。
4.7.2 RasterRender 对象:

  抽象类,有15个子类,负责进行不同类型的着色运算。   都实现了IRasterRender接口,该接口定义了栅格图层符号化的公共属性和方法。   可通过IRasterLayer::Renderer属性获得一个栅格图层的符号化对象
  以下代码段,对一个RasterLayer进行RasterStrechColorRampRenderer(色带 渲染)符号化操作:

  1. 1         /// <summary>
  2. 2         /// StretchColorRamp符号化RasterLayer
  3. 3         /// </summary>
  4. 4         /// <param name="pRasterLayer"></param>
  5. 5         public void SetStretchColorRampRenderer(IRasterLayer pRasterLayer)
  6. 6         {
  7. 7             try
  8. 8             {
  9. 9                 // 创建RasterStretchColorRampRendererClass对象
  10. 10                 IRasterStretchColorRampRenderer pRStretchRender = new RasterStretchColorRampRendererClass();
  11. 11                 // QI到IRasterRenderer
  12. 12                 IRasterRenderer pRasterRender = pRStretchRender as IRasterRenderer;
  13. 13                 pRasterRender.Raster = pRasterLayer as IRaster;// 将栅格要素图层设置到 作为 栅格渲染的对象上
  14. 14                 pRasterRender.Update();
  15. 15                 // 创建两个起始颜色
  16. 16                 IRgbColor pFromRgbColor = new RgbColorClass();
  17. 17                 pFromRgbColor.Red = 255;
  18. 18                 IRgbColor pToRgbColor = new RgbColorClass();
  19. 19                 pToRgbColor.Blue = 255;
  20. 20
  21. 21                 // 创建起止颜色带
  22. 22                 IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass();
  23. 23                 pAlgorithmicColorRamp.Size = 255;
  24. 24                 pAlgorithmicColorRamp.FromColor = pFromRgbColor as IColor;
  25. 25                 pAlgorithmicColorRamp.ToColor = pToRgbColor as IColor;
  26. 26                 bool btrue = true;
  27. 27                 pAlgorithmicColorRamp.CreateRamp(out btrue);
  28. 28                 // 选择拉伸颜色带符号化所采用的颜色带(通过颜色带进行渲染操作)
  29. 29                 pRStretchRender.ColorRamp = pAlgorithmicColorRamp as IColorRamp;
  30. 30                 pRasterRender.Update();
  31. 31                 pRasterLayer.Renderer = pRasterRender;
  32. 32             }
  33. 33             catch (Exception)
  34. 34             {
  35. 35                 throw;
  36. 36             }
  37. 37         }
 1         /// <summary>
2 /// StretchColorRamp符号化RasterLayer
3 /// </summary>
4 /// <param name="pRasterLayer"></param>
5 public void SetStretchColorRampRenderer(IRasterLayer pRasterLayer)
6 {
7 try
8 {
9 // 创建RasterStretchColorRampRendererClass对象
10 IRasterStretchColorRampRenderer pRStretchRender = new RasterStretchColorRampRendererClass();
11 // QI到IRasterRenderer
12 IRasterRenderer pRasterRender = pRStretchRender as IRasterRenderer;
13 pRasterRender.Raster = pRasterLayer as IRaster;// 将栅格要素图层设置到 作为 栅格渲染的对象上
14 pRasterRender.Update();
15 // 创建两个起始颜色
16 IRgbColor pFromRgbColor = new RgbColorClass();
17 pFromRgbColor.Red = 255;
18 IRgbColor pToRgbColor = new RgbColorClass();
19 pToRgbColor.Blue = 255;
20
21 // 创建起止颜色带
22 IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass();
23 pAlgorithmicColorRamp.Size = 255;
24 pAlgorithmicColorRamp.FromColor = pFromRgbColor as IColor;
25 pAlgorithmicColorRamp.ToColor = pToRgbColor as IColor;
26 bool btrue = true;
27 pAlgorithmicColorRamp.CreateRamp(out btrue);
28 // 选择拉伸颜色带符号化所采用的颜色带(通过颜色带进行渲染操作)
29 pRStretchRender.ColorRamp = pAlgorithmicColorRamp as IColorRamp;
30 pRasterRender.Update();
31 pRasterLayer.Renderer = pRasterRender;
32 }
33 catch (Exception)
34 {
35 throw;
36 }
37 }

ArcEngine 9.3 学习笔记(六):图层符号化(COlorRamp,MarkerSymbol,LineSymbol,FillSymbol,TextSymbol,3DChartSymbol,使用ServerStyle符号库,FeatureRender,RasterRender)的更多相关文章

  1. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  2. Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  3. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  5. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  6. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  7. Linux学习笔记(六) 进程管理

    1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...

  8. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

  9. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

随机推荐

  1. "Classifying plankton with deep neural networks" notes

    cross entropy loss is not quite the same as optimizing classification accuracy. Althougth the two ar ...

  2. WARNING [Project: :app] To shrink resources you must also enable ProGuard

    新版本的Android Gradle plugin中,对于resource有了更加一步的管理,可以把unused resource移除,不仅是自己工程,并且library里面也可以没有用到的,也可以移 ...

  3. easyui的datagrid删除一条记录后更新出问题

    1.问题 如果先删除一条记录,然后不选中一条记录,去更新一条,默认是有选中的记录的,就是被删除的那条记录. 2.解决方法 $("#dg").datagrid('uncheckAll ...

  4. leetcode算法刷题(三)

    今天在刷了几道简单的动态规划后,又看了看string方面的题 第五题 Longest Palindromic Substring 题目的意思:求一个字符串的最长回文子串 分析:开始,我的想法是,现在字 ...

  5. data stage走起

    如题,希望以后可以找到相应的工作.(已经工作3年以上了)

  6. 如何用ATL创建ActiveX控件

    演示截图: 代码简介或代码解析: 如何用ATL创建ActiveX控件 实现了一个ActiveX控件,它在一个圆内部有个正多边形,当用户在多变形内部单击将会使多边形的边数在当前的基础上+1,在多变形外部 ...

  7. 有关UNICODE、ANSI字符集和相关字符串操作

    Q UNICODE字符串如何显示 A 如果程序定义了_UNICODE宏直接用 WCHAR *str=L"unicodestring"; TextOut(0,0,str); 否则就需 ...

  8. egret随笔-publish命令的改进

    缘由 导了几天的ipa,每次publish后都要改zip包名的代码,终于鼓起勇气翻看了一下egret publish的代码,唉,这代码...应该不会是北京的那几个大牛写的吧??? 正题 看了源码才知道 ...

  9. mit java open course assignment #2

    package come; public class Marothon { public static void FirstName(String[] args1,int[] args2){ int ...

  10. Item with the same id "98" already exist

    在magento项目中多次遇到这样一个错误: Item (Bluecom_Onefieldusername_Model_Customer) with the same id "98" ...