[转] Symbol对象

简介:

GIS中的离散实体有三种:点、线、面,在ArcEngine中用三种符号对应表示,分别是:MarkSymbol、LineSymbol和FillSymbol。此外还有TextSymbol用于文字标注,3DChart用来显示饼图等三维对象。

所有符号都实现ISymbol和IMapLevel接口,ISymbol定义一个符号对象的基本属性和方法,IMapLevel定义属性可以确定符号显示的图层,和图层类似,用于确定符号的叠加顺序。

 

一、MarkerSymbol对象

  MarkerSymbol对象用于修饰点对象符号,拥有12个子类:

Classes Description
ArrowMarkerSymbol 箭头形式符号,箭头的样式只有一个:esriAMSPlain
BarChartSymbol Defines a bar chart symbol.
CharacterMarker3DSymbol (3DAnalyst) 3D Character Marker Symbol component.
CharacterMarkerSymbol 字符形式符号,用于将一个点要素显示为字符状。Characterindex属性用来确定显示的字符
Marker3DSymbol (3DAnalyst) 3D Marker Symbol component.
MultiLayerMarkerSymbol 使用多个符号进行叠加生成新符号。
PictureMarkerSymbol 以图片为背景的符号,把一个点对象的外形表示为一个位图,可以指定Picture或者使用CreateMarkSymbolFromFile获取一张位图
PieChartSymbol Defines a pie chart symbol.
SimpleMarker3DSymbol (3DAnalyst) Simple 3D Marker Symbol component.
SimpleMarkerSymbol 简单类型点符号,有五种类型(esriSMSCircle、esriSMSSquare、esriSMSCross、esriSMSX和esriSMSDiamond)
StackedChartSymbol Defines a stacked chart symbol.
TextMarkerSymbol (TrackingAnalyst)

Class used to create a text marker symbol used to symbolize point geometries.

  都实现IMarkerSymbol接口,定义了Angle、Color、Size、Xoffset、Yoffset。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
private  void  simpleLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     ISimpleLineSymbol simpleLineSymbol =  new  SimpleLineSymbolClass();
     simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     simpleLineSymbol.Width = 10;
     IRgbColor rgbColor = getRGB(255, 0, 0);
     simpleLineSymbol.Color = rgbColor;
     ISymbol symbol = simpleLineSymbol  as  ISymbol;
     symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
     IActiveView activeView =  this .axMapControl1.ActiveView;
     //用activeView.ScreenDisplay进行画图
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(symbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing(); //释放资源
}
 
private  void  cartographicLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     ICartographicLineSymbol cartographicLineSymbol =  new  CartographicLineSymbolClass(); //制图线符号
     cartographicLineSymbol.Cap = esriLineCapStyle.esriLCSButt;
     cartographicLineSymbol.Join = esriLineJoinStyle.esriLJSBevel; //连接方式
     cartographicLineSymbol.Width = 10;
     cartographicLineSymbol.MiterLimit = 4; //Size threshold(阈值) for showing mitered line joins.
     ILineProperties lineProperties;
     lineProperties = cartographicLineSymbol  as  ILineProperties;
     lineProperties.Offset = 0;
     double [] dob =  new  double [6];
     dob[0] = 0;
     dob[1] = 1;
     dob[2] = 2;
     dob[3] = 3;
     dob[4] = 4;
     dob[5] = 5;
     ITemplate template =  new  TemplateClass(); //定义模版
     template.Interval = 1;
     for  ( int  i = 0; i < dob.Length; i += 2)
     {
         template.AddPatternElement(dob[i], dob[i + 1]);
     }
     lineProperties.Template = template;
 
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     IRgbColor rgbColor = getRGB(0, 255, 0);
     cartographicLineSymbol.Color = rgbColor;
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(cartographicLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  multiLayerLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IMultiLayerLineSymbol multiLayerLineSymbol =  new  MultiLayerLineSymbolClass();
     ISimpleLineSymbol simpleLineSymbol =  new  SimpleLineSymbolClass();
     simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
     simpleLineSymbol.Width = 10;
     IRgbColor rgbColor = getRGB(255, 0, 0);
     simpleLineSymbol.Color = rgbColor;
     ISymbol symbol = simpleLineSymbol  as  ISymbol;
     symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
 
     ICartographicLineSymbol cartographicLineSymbol =  new  CartographicLineSymbolClass();
     cartographicLineSymbol.Cap = esriLineCapStyle.esriLCSButt;
     cartographicLineSymbol.Join = esriLineJoinStyle.esriLJSBevel;
     cartographicLineSymbol.Width = 10;
     cartographicLineSymbol.MiterLimit = 4;
     ILineProperties lineProperties;
     lineProperties = cartographicLineSymbol  as  ILineProperties;
     lineProperties.Offset = 0;
     double [] dob =  new  double [6];
     dob[0] = 0;
     dob[1] = 1;
     dob[2] = 2;
     dob[3] = 3;
     dob[4] = 4;
     dob[5] = 5;
     ITemplate template =  new  TemplateClass();
     template.Interval = 1;
     for  ( int  i = 0; i < dob.Length; i += 2)
     {
         template.AddPatternElement(dob[i], dob[i + 1]);
     }
     lineProperties.Template = template;
 
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     rgbColor = getRGB(0, 255, 0);
     cartographicLineSymbol.Color = rgbColor;
     multiLayerLineSymbol.AddLayer(simpleLineSymbol);
     multiLayerLineSymbol.AddLayer(cartographicLineSymbol);
 
     IActiveView activeView =  this .axMapControl1.ActiveView;
 
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(multiLayerLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  hashLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IHashLineSymbol hashLineSymbol =  new  HashLineSymbolClass();
     ILineProperties lineProperties = hashLineSymbol  as  ILineProperties;
     lineProperties.Offset = 0;
     double [] dob =  new  double [6];
     dob[0] = 0;
     dob[1] = 1;
     dob[2] = 2;
     dob[3] = 3;
     dob[4] = 4;
     dob[5] = 5;
     ITemplate template =  new  TemplateClass();
     template.Interval = 1;
     for  ( int  i = 0; i < dob.Length; i += 2)
     {
         template.AddPatternElement(dob[i], dob[i + 1]);
     }
     lineProperties.Template = template;
 
     hashLineSymbol.Width = 2;
     hashLineSymbol.Angle = 45;
     IRgbColor hashColor =  new  RgbColor();
     hashColor = getRGB(0, 0, 255);
     hashLineSymbol.Color = hashColor;
 
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     IActiveView activeView =  this .axMapControl1.ActiveView;
 
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(hashLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing();
}
 
//下面的没有看
private  void  markerLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IArrowMarkerSymbol arrowMarkerSymbol =  new  ArrowMarkerSymbolClass();
     IRgbColor rgbColor = getRGB(255, 0, 0);
     arrowMarkerSymbol.Color = rgbColor  as  IColor;
     arrowMarkerSymbol.Length = 10;
     arrowMarkerSymbol.Width = 10;
     arrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain;
 
     IMarkerLineSymbol markerLineSymbol =  new  MarkerLineSymbolClass();
     markerLineSymbol.MarkerSymbol = arrowMarkerSymbol;
     rgbColor = getRGB(0, 255, 0);
     markerLineSymbol.Color = rgbColor;
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(markerLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  pictureLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IPictureLineSymbol pictureLineSymbol =  new  PictureLineSymbolClass();
     //创建图片符号
     //string fileName = @"E:\vs2005\第五章\lesson2\lesson2\data\qq.bmp";
     string  path = Directory.GetCurrentDirectory();
     string  fileName = path +  @"\qq.bmp" ;
     pictureLineSymbol.CreateLineSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName);
     IRgbColor rgbColor = getRGB(0, 255, 0);
     pictureLineSymbol.Color = rgbColor;
     pictureLineSymbol.Offset = 0;
     pictureLineSymbol.Width = 10;
     pictureLineSymbol.Rotate =  false ;
 
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(pictureLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing();
}

 

 

 

 

 

 

二、LineSymbol对象

  用于修饰线性几何对象符号。Color和Width属性为两个唯一公共属性。

  子类有:

Classes Description
CartographicLineSymbol 制图线符号,实现ICatographicLineSymbol(主要设置线符号的节点属性,Join:设置线要素转折处的样式)和ILineProperties接口
HashLineSymbol 离散线符号
MarkerLineSymbol A line symbol composed of repeating markers.点线符号
MultiLayerLineSymbol A line symbol that contains one or more layers.使用重叠符号方法产生新符号
PictureLineSymbol A line symbol composed of either a BMP or an EMF picture.比如火车线路符号
SimpleLine3DSymbol (3DAnalyst) Simple 3D Line Symbol component.
SimpleLineSymbol 简单线符号
TextureLineSymbol (3DAnalyst) Texture Line Symbol component.(纹理贴图线符号)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
private  void  simpleLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     ISimpleLineSymbol simpleLineSymbol =  new  SimpleLineSymbolClass();
     simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     simpleLineSymbol.Width = 10;
     IRgbColor rgbColor = getRGB(255, 0, 0);
     simpleLineSymbol.Color = rgbColor;
     ISymbol symbol = simpleLineSymbol  as  ISymbol;
     symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
     IActiveView activeView =  this .axMapControl1.ActiveView;
     //用activeView.ScreenDisplay进行画图
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(symbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing(); //释放资源
}
 
private  void  cartographicLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     ICartographicLineSymbol cartographicLineSymbol =  new  CartographicLineSymbolClass(); //制图线符号
     cartographicLineSymbol.Cap = esriLineCapStyle.esriLCSButt;
     cartographicLineSymbol.Join = esriLineJoinStyle.esriLJSBevel; //连接方式
     cartographicLineSymbol.Width = 10;
     cartographicLineSymbol.MiterLimit = 4; //Size threshold(阈值) for showing mitered line joins.
     ILineProperties lineProperties;
     lineProperties = cartographicLineSymbol  as  ILineProperties;
     lineProperties.Offset = 0;
     double [] dob =  new  double [6];
     dob[0] = 0;
     dob[1] = 1;
     dob[2] = 2;
     dob[3] = 3;
     dob[4] = 4;
     dob[5] = 5;
     ITemplate template =  new  TemplateClass(); //定义模版
     template.Interval = 1;
     for  ( int  i = 0; i < dob.Length; i += 2)
     {
         template.AddPatternElement(dob[i], dob[i + 1]);
     }
     lineProperties.Template = template;
 
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     IRgbColor rgbColor = getRGB(0, 255, 0);
     cartographicLineSymbol.Color = rgbColor;
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(cartographicLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  multiLayerLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IMultiLayerLineSymbol multiLayerLineSymbol =  new  MultiLayerLineSymbolClass();
     ISimpleLineSymbol simpleLineSymbol =  new  SimpleLineSymbolClass();
     simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
     simpleLineSymbol.Width = 10;
     IRgbColor rgbColor = getRGB(255, 0, 0);
     simpleLineSymbol.Color = rgbColor;
     ISymbol symbol = simpleLineSymbol  as  ISymbol;
     symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
 
     ICartographicLineSymbol cartographicLineSymbol =  new  CartographicLineSymbolClass();
     cartographicLineSymbol.Cap = esriLineCapStyle.esriLCSButt;
     cartographicLineSymbol.Join = esriLineJoinStyle.esriLJSBevel;
     cartographicLineSymbol.Width = 10;
     cartographicLineSymbol.MiterLimit = 4;
     ILineProperties lineProperties;
     lineProperties = cartographicLineSymbol  as  ILineProperties;
     lineProperties.Offset = 0;
     double [] dob =  new  double [6];
     dob[0] = 0;
     dob[1] = 1;
     dob[2] = 2;
     dob[3] = 3;
     dob[4] = 4;
     dob[5] = 5;
     ITemplate template =  new  TemplateClass();
     template.Interval = 1;
     for  ( int  i = 0; i < dob.Length; i += 2)
     {
         template.AddPatternElement(dob[i], dob[i + 1]);
     }
     lineProperties.Template = template;
 
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     rgbColor = getRGB(0, 255, 0);
     cartographicLineSymbol.Color = rgbColor;
     multiLayerLineSymbol.AddLayer(simpleLineSymbol);
     multiLayerLineSymbol.AddLayer(cartographicLineSymbol);
 
     IActiveView activeView =  this .axMapControl1.ActiveView;
 
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(multiLayerLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  hashLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IHashLineSymbol hashLineSymbol =  new  HashLineSymbolClass();
     ILineProperties lineProperties = hashLineSymbol  as  ILineProperties;
     lineProperties.Offset = 0;
     double [] dob =  new  double [6];
     dob[0] = 0;
     dob[1] = 1;
     dob[2] = 2;
     dob[3] = 3;
     dob[4] = 4;
     dob[5] = 5;
     ITemplate template =  new  TemplateClass();
     template.Interval = 1;
     for  ( int  i = 0; i < dob.Length; i += 2)
     {
         template.AddPatternElement(dob[i], dob[i + 1]);
     }
     lineProperties.Template = template;
 
     hashLineSymbol.Width = 2;
     hashLineSymbol.Angle = 45;
     IRgbColor hashColor =  new  RgbColor();
     hashColor = getRGB(0, 0, 255);
     hashLineSymbol.Color = hashColor;
 
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     IActiveView activeView =  this .axMapControl1.ActiveView;
 
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(hashLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing();
}
 
//下面的没有看
private  void  markerLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IArrowMarkerSymbol arrowMarkerSymbol =  new  ArrowMarkerSymbolClass();
     IRgbColor rgbColor = getRGB(255, 0, 0);
     arrowMarkerSymbol.Color = rgbColor  as  IColor;
     arrowMarkerSymbol.Length = 10;
     arrowMarkerSymbol.Width = 10;
     arrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain;
 
     IMarkerLineSymbol markerLineSymbol =  new  MarkerLineSymbolClass();
     markerLineSymbol.MarkerSymbol = arrowMarkerSymbol;
     rgbColor = getRGB(0, 255, 0);
     markerLineSymbol.Color = rgbColor;
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(markerLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  pictureLineSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IPictureLineSymbol pictureLineSymbol =  new  PictureLineSymbolClass();
     //创建图片符号
     //string fileName = @"E:\vs2005\第五章\lesson2\lesson2\data\qq.bmp";
     string  path = Directory.GetCurrentDirectory();
     string  fileName = path +  @"\qq.bmp" ;
     pictureLineSymbol.CreateLineSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName);
     IRgbColor rgbColor = getRGB(0, 255, 0);
     pictureLineSymbol.Color = rgbColor;
     pictureLineSymbol.Offset = 0;
     pictureLineSymbol.Width = 10;
     pictureLineSymbol.Rotate =  false ;
 
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(pictureLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
     activeView.ScreenDisplay.FinishDrawing();
}

 

 

三、FillSymbol对象

  用来修饰多边形等具有面积的几何形体的符号对象。只定义Color和OutLine两个属性。

Classes Description
ColorRampSymbol (Carto) ESRI ColorRampSymbol for raster rendering.
ColorSymbol (Carto) ESRI ColorSymbol for raster rendering.
DotDensityFillSymbol Defines a dot density fill symbol, a data driven symbol commonly used with the DotDensityRenderer对象.
GradientFillSymbol 渐变颜色填充符号,IntervalCount属性来设置用户所需要的颜色梯度。
LineFillSymbol 线填充符号,表现为重复的线条,可以设置线的角度,偏移量和线之间的间隔距离。
MarkerFillSymbol 点填充符号,使用一个Marker符号作为背景填充符号,实现了IMarkerFillSymbol和IFillProperties两个接口
MultiLayerFillSymbol 多层填充符号,使用多个填充符号进行叠加
PictureFillSymbol A fill symbol based on either a BMP or an EMF picture.
RasterRGBSymbol (Carto) ESRI RasterRGBSymbol for raster rendering.
SimpleFillSymbol A fill symbol comprised from a predefined set of styles.
TextureFillSymbol (3DAnalyst) Texture Fill Symbol component.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
private  void  simpleFillSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     //简单填充符号
     ISimpleFillSymbol simpleFillSymbol =  new  SimpleFillSymbolClass();
     simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
     simpleFillSymbol.Color = getRGB(255, 0, 0);
     //创建边线符号
     ISimpleLineSymbol simpleLineSymbol =  new  SimpleLineSymbolClass();
     simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
     simpleLineSymbol.Color = getRGB(0, 255, 0);
     simpleLineSymbol.Width = 10;
     ISymbol symbol = simpleLineSymbol  as  ISymbol;
     symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
 
     simpleFillSymbol.Outline = simpleLineSymbol;
     //创建面对象
     object  Missing = Type.Missing;
     IPolygon polygon =  new  PolygonClass();
     IPointCollection pointCollection = polygon  as  IPointCollection;
     IPoint point =  new  PointClass();
     point.PutCoords(5, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(5, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     polygon.SimplifyPreserveFromTo();
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(simpleFillSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolygon(polygon  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  lineFillSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     ICartographicLineSymbol cartoLine =  new  CartographicLineSymbol();
     cartoLine.Cap = esriLineCapStyle.esriLCSButt;
     cartoLine.Join = esriLineJoinStyle.esriLJSMitre;
     cartoLine.Color = getRGB(255, 0, 0);
     cartoLine.Width = 2;
     //Create the LineFillSymbo
     ILineFillSymbol lineFill =  new  LineFillSymbol();
     lineFill.Angle = 45;
     lineFill.Separation = 10;
     lineFill.Offset = 5;
     lineFill.LineSymbol = cartoLine;
     object  Missing = Type.Missing;
     IPolygon polygon =  new  PolygonClass();
     IPointCollection pointCollection = polygon  as  IPointCollection;
     IPoint point =  new  PointClass();
     point.PutCoords(5, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(5, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     polygon.SimplifyPreserveFromTo();
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(lineFill  as  ISymbol);
     activeView.ScreenDisplay.DrawPolygon(polygon  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  markerFillSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IArrowMarkerSymbol arrowMarkerSymbol =  new  ArrowMarkerSymbolClass();
     IRgbColor rgbColor = getRGB(255, 0, 0);
     arrowMarkerSymbol.Color = rgbColor  as  IColor;
     arrowMarkerSymbol.Length = 10;
     arrowMarkerSymbol.Width = 10;
     arrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain;
 
 
     IMarkerFillSymbol markerFillSymbol =  new  MarkerFillSymbolClass();
     markerFillSymbol.MarkerSymbol = arrowMarkerSymbol;
     rgbColor = getRGB(0, 255, 0);
     markerFillSymbol.Color = rgbColor;
     markerFillSymbol.Style = esriMarkerFillStyle.esriMFSGrid;
 
     IFillProperties fillProperties = markerFillSymbol  as  IFillProperties;
     fillProperties.XOffset = 2;
     fillProperties.YOffset = 2;
     fillProperties.XSeparation = 15;
     fillProperties.YSeparation = 20;
 
     object  Missing = Type.Missing;
     IPolygon polygon =  new  PolygonClass();
     IPointCollection pointCollection = polygon  as  IPointCollection;
     IPoint point =  new  PointClass();
     point.PutCoords(5, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(5, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     polygon.SimplifyPreserveFromTo();
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(markerFillSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolygon(polygon  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  gradientFillSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IGradientFillSymbol gradientFillSymbol =  new  GradientFillSymbolClass();
     IAlgorithmicColorRamp algorithcColorRamp =  new  AlgorithmicColorRampClass();
     algorithcColorRamp.FromColor = getRGB(255, 0, 0);
     algorithcColorRamp.ToColor = getRGB(0, 255, 0);
     algorithcColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm;
     gradientFillSymbol.ColorRamp = algorithcColorRamp;
     gradientFillSymbol.GradientAngle = 45;
     gradientFillSymbol.GradientPercentage = 0.9;
     gradientFillSymbol.Style = esriGradientFillStyle.esriGFSLinear;
 
 
     object  Missing = Type.Missing;
     IPolygon polygon =  new  PolygonClass();
     IPointCollection pointCollection = polygon  as  IPointCollection;
     IPoint point =  new  PointClass();
     point.PutCoords(5, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(5, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     polygon.SimplifyPreserveFromTo();
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(gradientFillSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolygon(polygon  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  pictureFillSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IPictureFillSymbol pictureFillSymbol =  new  PictureFillSymbolClass();
     //创建图片符号
     //string fileName = @"E:\vs2005\第五章\lesson2\lesson2\data\qq.bmp";
     string  path = Directory.GetCurrentDirectory();
     string  fileName = path +  @"\qq.bmp" ;
     pictureFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName);
     pictureFillSymbol.Color = getRGB(0, 255, 0);
 
     ISimpleLineSymbol simpleLineSymbol =  new  SimpleLineSymbolClass();
     simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
     simpleLineSymbol.Color = getRGB(255, 0, 0);
     ISymbol symbol = pictureFillSymbol  as  ISymbol;
     symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
 
     pictureFillSymbol.Outline = simpleLineSymbol;
     pictureFillSymbol.Angle = 45;
 
     object  Missing = Type.Missing;
     IPolygon polygon =  new  PolygonClass();
     IPointCollection pointCollection = polygon  as  IPointCollection;
     IPoint point =  new  PointClass();
     point.PutCoords(5, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(5, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     polygon.SimplifyPreserveFromTo();
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(pictureFillSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolygon(polygon  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
}
 
private  void  multilayerFillSymbolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     IMultiLayerFillSymbol multiLayerFillSymbol =  new  MultiLayerFillSymbolClass();
 
     IGradientFillSymbol gradientFillSymbol =  new  GradientFillSymbolClass();
     IAlgorithmicColorRamp algorithcColorRamp =  new  AlgorithmicColorRampClass();
     algorithcColorRamp.FromColor = getRGB(255, 0, 0);
     algorithcColorRamp.ToColor = getRGB(0, 255, 0);
     algorithcColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm;
     gradientFillSymbol.ColorRamp = algorithcColorRamp;
     gradientFillSymbol.GradientAngle = 45;
     gradientFillSymbol.GradientPercentage = 0.9;
     gradientFillSymbol.Style = esriGradientFillStyle.esriGFSLinear;
 
     ICartographicLineSymbol cartoLine =  new  CartographicLineSymbol();
     cartoLine.Cap = esriLineCapStyle.esriLCSButt;
     cartoLine.Join = esriLineJoinStyle.esriLJSMitre;
     cartoLine.Color = getRGB(255, 0, 0);
     cartoLine.Width = 2;
     //Create the LineFillSymbo
     ILineFillSymbol lineFill =  new  LineFillSymbol();
     lineFill.Angle = 45;
     lineFill.Separation = 10;
     lineFill.Offset = 5;
     lineFill.LineSymbol = cartoLine;
 
 
     multiLayerFillSymbol.AddLayer(gradientFillSymbol);
     multiLayerFillSymbol.AddLayer(lineFill);
 
     object  Missing = Type.Missing;
     IPolygon polygon =  new  PolygonClass();
     IPointCollection pointCollection = polygon  as  IPointCollection;
     IPoint point =  new  PointClass();
     point.PutCoords(5, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(5, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 10);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     point.PutCoords(10, 5);
     pointCollection.AddPoint(point,  ref  Missing,  ref  Missing);
     polygon.SimplifyPreserveFromTo();
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(multiLayerFillSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolygon(polygon  as  IGeometry);
     activeView.ScreenDisplay.FinishDrawing();
}

 

 

四、TextSymbol对象

  用于修饰文字元素,实现ITextSymbol,ISimpleTextSymbol,IFormattedTextSymbol接口。

  ITextSymbol是定义文本字符对象的主要接口,通过IFontDisp接口来设置字体的大小、粗体、斜体等。

  ISimpleTextSymbol

 

   BezierTextPath对象可以让文字的路径按照贝塞尔曲线设置。

  ITextPath接口提供用来计算每个字符文字路径的位置。

  IFormattedTextSymbol接口用来设置背景对象、阴影等属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
private  void  textSybmolToolStripMenuItem_Click( object  sender, EventArgs e)
{
     ITextSymbol textSymbol =  new  TextSymbolClass();
     System.Drawing.Font drawFont =  new  System.Drawing.Font( "宋体" , 16, FontStyle.Bold);
     stdole.IFontDisp fontDisp = (stdole.IFontDisp)( new  stdole.StdFontClass());
     textSymbol.Font = fontDisp;
     textSymbol.Color = getRGB(0, 255, 0);
     textSymbol.Size = 20;
     IPolyline polyline =  new  PolylineClass();
     IPoint point =  new  PointClass();
     point.PutCoords(1, 1);
     polyline.FromPoint = point;
     point.PutCoords(10, 10);
     polyline.ToPoint = point;
     ITextPath textPath =  new  BezierTextPathClass();
     //创建简单标注
     ILineSymbol lineSymbol =  new  SimpleLineSymbolClass();
     lineSymbol.Color = getRGB(255, 0, 0);
     lineSymbol.Width = 5;
     ISimpleTextSymbol simpleTextSymbol = textSymbol  as  ISimpleTextSymbol;
     simpleTextSymbol.TextPath = textPath;
     object  oLineSymbol = lineSymbol;
     object  oTextSymbol = textSymbol;
     IActiveView activeView =  this .axMapControl1.ActiveView;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(oLineSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawPolyline(polyline  as  IGeometry);
     activeView.ScreenDisplay.SetSymbol(oTextSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawText(polyline  as  IGeometry,  "简单标注" ); ;
     activeView.ScreenDisplay.FinishDrawing();
 
     //创建气泡标注(两中风格,一种是有锚点,一种是marker方式)
     //锚点方式
     ISimpleFillSymbol simpleFillSymbol =  new  SimpleFillSymbolClass();
     simpleFillSymbol.Color = getRGB(0, 255, 0);
     simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
     IBalloonCallout balloonCallout =  new  BalloonCalloutClass();
     balloonCallout.Style = esriBalloonCalloutStyle.esriBCSRectangle;
     balloonCallout.Symbol = simpleFillSymbol;
     balloonCallout.LeaderTolerance = 10;
 
     point.PutCoords(5, 5);
     balloonCallout.AnchorPoint = point;
 
     IGraphicsContainer graphicsContainer = activeView  as  IGraphicsContainer;
     IFormattedTextSymbol formattedTextSymbol =  new  TextSymbolClass();
     formattedTextSymbol.Color = getRGB(0, 0, 255);
     point.PutCoords(10, 5);
     ITextBackground textBackground = balloonCallout  as  ITextBackground;
     formattedTextSymbol.Background = textBackground;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(formattedTextSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawText(point  as  IGeometry,  "气泡1" );
     activeView.ScreenDisplay.FinishDrawing();
 
 
     //marker方式
     textSymbol =  new  TextSymbolClass();
     textSymbol.Color = getRGB(255, 0, 0);
     textSymbol.Angle = 0;
     textSymbol.RightToLeft =  false ;
     textSymbol.VerticalAlignment = esriTextVerticalAlignment.esriTVABaseline;
     textSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHAFull;
 
 
     IMarkerTextBackground markerTextBackground =  new  MarkerTextBackgroundClass();
     markerTextBackground.ScaleToFit =  true ;
     markerTextBackground.TextSymbol = textSymbol;
 
     IRgbColor rgbColor =  new  RgbColorClass();
     IPictureMarkerSymbol pictureMarkerSymbol =  new  PictureMarkerSymbolClass();
     //string fileName = @"E:\vs2005\第五章\lesson2\lesson2\data\qq.bmp";
     string  path = Directory.GetCurrentDirectory();
     string  fileName = path +  @"\qq.bmp" ;
     pictureMarkerSymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName);
     pictureMarkerSymbol.Angle = 0;
     pictureMarkerSymbol.BitmapTransparencyColor = rgbColor;
     pictureMarkerSymbol.Size = 20;
     pictureMarkerSymbol.XOffset = 0;
     pictureMarkerSymbol.YOffset = 0;
 
     markerTextBackground.Symbol = pictureMarkerSymbol  as  IMarkerSymbol;
 
     formattedTextSymbol =  new  TextSymbolClass();
     formattedTextSymbol.Color = getRGB(255, 0, 0);
     fontDisp.Size = 10;
     fontDisp.Bold =  true ;
     formattedTextSymbol.Font = fontDisp;
 
     point.PutCoords(15, 5);
 
     formattedTextSymbol.Background = markerTextBackground;
     activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, ( short )esriScreenCache.esriNoScreenCache);
     activeView.ScreenDisplay.SetSymbol(formattedTextSymbol  as  ISymbol);
     activeView.ScreenDisplay.DrawText(point  as  IGeometry,  "气泡2" );
     activeView.ScreenDisplay.FinishDrawing();
 
}

 

 

 五、3DChartSymbol对象

  是一个抽象类,有三个子类:BarChart(用来着色)、PieChart、StaekedChart。

  它实现多个接口:IChartSymbol、IBarChartSymbol、IPieChartSymbol和IStackedSymbol等。

  IChartSymbol接口主要用于计算一个ChartSymbol对象中的柱状和饼状部分的尺寸,其中Maximum值是创建3DChartSymbol对象后必须设置的一个属性,着色一般在一个要素图层上进行,因而可以从它的要素类中获得一系列的数值统计值。如果有三个数值参与着色,系统则必须对三个数值进行大小比较,找出最大的那个赋值给Maximum。Value属性用数组来设置柱状高度或饼状宽度。可以用ISymbolArray来管理多个参与着色的符号对象。

  BarChartSymbol对象实现IBarChartSymbol接口,用不同类型的柱子代表一个要素中的不同属性,高度取决于属性值得大小。

  PieChartSymbol对象实现IPieChartSymbol接口,用一个饼图来显示一个要素中的不同属性,不同属性按照他们的数值大小,占有不同比例的扇形区域。

  StackedSymbol对象实现IStackedSymbol接口,堆积的柱子表示一个要素中的不同属性,Fixed属性为true时,每个柱子的高度都一样,false时,柱子尺寸根据要素类的属性来计算得出。

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。






    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5903590.html,如需转载请自行联系原作者

相关文章
|
5天前
|
数据采集 人工智能 安全
|
14天前
|
云安全 监控 安全
|
6天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1183 152
|
19天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1843 9
|
11天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
749 152
|
8天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
560 5
|
13天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
693 14