PIE SDK线元素的绘制
1. 功能简介
在数据的处理中会用到线元素的绘制,目前PIE SDK支持ILineSymbol的线元素的绘制,LineSymbol对象是用于修饰线状对象的符号,它包括CartographicLineSymbol(制图形式的线符号)、MarkerLineSymbol(由点状符号形成的线符号)、MultiLayerLineSymbol(多个符号叠加生成的新的线符号)、PictureLineSymbol(以图片为背景的线符号)、SimpleLineSymbol(简单类型的线符号)这5个不同类型线符号的子类。
2. 功能实现说明
2.1. SimpleLineSymbol类型的线元素的绘制
2.1.1. 实现思路及原理说明
第一步 |
设置点的Geometry信息 |
第二步 |
设置线的符号 |
第三步 |
绘制元素 |
2.1.2. 核心接口与方法
接口/类 |
方法/属性 |
说明 |
ILineElement |
Geometry属性 |
获取或设置Geometry |
Symbol属性 |
获取或设置符号样式 |
|
IGraphicsContainer |
AddElement(IElement element) |
添加元素 |
ISimpleLineSymbol |
Style属性 |
线样式 |
IsDrawOutline |
是否绘制轮廓线 |
|
ILineSymbol |
Color属性 |
获取或设置线的颜色 |
Width属性 |
获取或设置线的宽度 |
|
Cap属性 |
获取或设置线帽的样式 |
|
Join属性 |
获取或设置线的连接样式 |
2.1.3. 示例代码
项目路径 |
百度云盘地址下/PIE示例程序/08元素绘制/02线的绘制 |
视频路径 |
百度云盘地址下/PIE视频教程/08元素绘制/02线的绘制.avi |
示例代码 |
|
1 /// <summary> 2 /// 绘制简单样式线符号的线元素 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 7 private void toolStripButton_DrawSimpleSyLine_Click(object sender, EventArgs e) 8 { //IPolyline polyline = mapControl1.TrackLine(); 9 //定义空间位置 10 IPointCollection polyLine = new Polyline(); 11 polyLine.AddPoint(100, 100, 0); 12 polyLine.AddPoint(500, 400, 0); 13 //定义线元素 14 ILineElement lineElement = new PIE.Carto.LineElement(); 15 lineElement.Geometry = polyLine as IGeometry; 16 17 ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbol(); 18 simpleLineSymbol.Style = SimpleLineStyle.SLSDashDot; 19 20 //设置符号的颜色,线宽,线帽样式,连接样式,偏移大小 21 ILineSymbol lineSymbol = simpleLineSymbol as ILineSymbol; 22 lineSymbol.Color = Color.Green; 23 lineSymbol.Width = 2; 24 lineSymbol.Cap = LineCapStyle.LCSRound; 25 lineSymbol.Join = LineJoinStyle.LJSBevel; 26 // lineSymbol.Offset = 20; 27 28 lineElement.Symbol = lineSymbol; 29 mapControlMain.ActiveView.GraphicsContainer.AddElement(lineElement); 30 mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll); 31 } |
2.1.4. 示例截图
2.2. MarkerLineSymbol类型的点元素的绘制
2.2.1. 实现思路及原理说明
第一步 |
设置点的Geometry信息 |
第二步 |
设置线的符号 |
第三步 |
绘制元素 |
2.2.2. 核心接口与方法
接口/类 |
方法/属性 |
说明 |
ILineElement |
Geometry属性 |
获取或设置Geometry |
Symbol属性 |
获取或设置符号样式 |
|
IGraphicsContainer |
AddElement(IElement element) |
添加元素 |
IMarkerLineSymbol |
Interval属性 |
获取或设置线的间距 |
IMarkerSymbol |
Color,Size,XOffset,YOffset |
颜色大小等属性 |
ILineSymbol |
Color属性 |
获取或设置线的颜色 |
Width属性 |
获取或设置线的宽度 |
|
Cap属性 |
获取或设置线帽的样式 |
|
Join属性 |
获取或设置线的连接样式 |
2.2.3. 示例代码
项目路径 |
百度云盘地址下/PIE示例程序/08元素绘制/02线的绘制 |
视频路径 |
百度云盘地址下/PIE视频教程/08元素绘制/02线的绘制.avi |
示例代码 |
|
1 /// <summary> 2 /// 点状填充的线绘制 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void toolStripButton_DrawMarkerSyLine_Click(object sender, EventArgs e) 7 { 8 //IPolyline polyline = mapControl1.TrackLine(); 9 //定义空间位置 10 IPointCollection polyLine = new Polyline(); 11 polyLine.AddPoint(100, 100, 0); 12 polyLine.AddPoint(500, 400, 0); 13 //定义线元素 14 ILineElement lineElement = new PIE.Carto.LineElement(); 15 lineElement.Geometry = polyLine as IGeometry; 16 17 IMarkerLineSymbol markerLineSymbol = new MarkerLineSymbol(); 18 markerLineSymbol.Interval = 3; 19 //设置线状符号IMarkerLineSymbol的点符号样式 20 21 ISimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(); 22 simpleMarkerSymbol.IsDrawOutline = true; 23 simpleMarkerSymbol.Style = SimpleMarkerStyle.SMSX; 24 IMarkerSymbol markerSymbol = simpleMarkerSymbol as IMarkerSymbol; 25 markerSymbol.Color = System.Drawing.Color.Green; 26 markerSymbol.Size = 5; 27 markerSymbol.XOffset = 0; 28 markerSymbol.YOffset = 0; 29 markerLineSymbol.MarkerSymbol = markerSymbol; 30 31 ILineSymbol lineSymbol = markerLineSymbol as ILineSymbol; 32 lineElement.Symbol = lineSymbol; 33 mapControlMain.ActiveView.GraphicsContainer.AddElement(lineElement); 34 mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll); 35 } |
2.2.4. 示例截图
2.3. CartographicLineSymbol类型的点元素的绘制
2.3.1. 实现思路及原理说明
第一步 |
设置点的Geometry信息 |
第二步 |
设置线的符号 |
第三步 |
绘制元素 |
2.3.2. 核心接口与方法
接口/类 |
方法/属性 |
说明 |
ILineElement |
Geometry属性 |
获取或设置Geometry |
Symbol属性 |
获取或设置符号样式 |
|
IGraphicsContainer |
AddElement(IElement element) |
添加元素 |
ICartographicLineSymbol |
DashPattern属性 |
获取或设置制线图规则 |
Width |
获取或设置制图线的宽度 |
|
Interval |
获取或设置线的间隔 |
|
ILineSymbol |
Color属性 |
获取或设置线的颜色 |
Width属性 |
获取或设置线的宽度 |
|
Cap属性 |
获取或设置线帽的样式 |
|
Join属性 |
获取或设置线的连接样式 |
2.3.3. 示例代码
项目路径 |
百度云盘地址下/PIE示例程序/08元素绘制/02线的绘制 |
视频路径 |
百度云盘地址下/PIE视频教程/08元素绘制/02线的绘制.avi |
示例代码 |
|
1 /// </summary> 2 /// <param name="sender"></param> 3 /// <param name="e"></param> 4 private void toolStripButton_DrawCartoSyLine_Click(object sender, EventArgs e) 5 { 6 //IPolyline polyline = mapControl1.TrackLine(); 7 //定义空间位置 8 IPointCollection polyLine = new Polyline(); 9 polyLine.AddPoint(100, 100, 0); 10 polyLine.AddPoint(500, 400, 0); 11 //定义线元素 12 ILineElement lineElement = new PIE.Carto.LineElement(); 13 lineElement.Geometry = polyLine as IGeometry; 14 15 ICartographicLineSymbol cartoLineSymbol = new CartographicLineSymbol(); 16 IList<double> IList = new List<double>(); 17 IList.Add(1); 18 IList.Add(2); 19 IList.Add(3); 20 cartoLineSymbol.DashPattern = IList;//制图线规则 21 cartoLineSymbol.Width = 4; 22 cartoLineSymbol.Interval = 3; 23 ///设置符号颜色,偏移量,线帽样式,连接样式 24 ILineSymbol lineSymbol = cartoLineSymbol as ILineSymbol; 25 lineSymbol.Color = Color.Green; 26 lineSymbol.Offset = 20; 27 lineSymbol.Cap = LineCapStyle.LCSRound; 28 lineSymbol.Join = LineJoinStyle.LJSRound; 29 30 lineElement.Symbol = lineSymbol; 31 mapControlMain.ActiveView.GraphicsContainer.AddElement(lineElement); 32 mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll); 33 } |
2.3.4. 示例截图
2.4. PictureLineSymbol类型的点元素的绘制
2.4.1. 实现思路及原理说明
第一步 |
设置点的Geometry信息 |
第二步 |
设置线的符号 |
第三步 |
绘制元素 |
2.4.2. 核心接口与方法
接口/类 |
方法/属性 |
说明 |
ILineElement |
Geometry属性 |
获取或设置Geometry |
Symbol属性 |
获取或设置符号样式 |
|
IGraphicsContainer |
AddElement(IElement element) |
添加元素 |
IPictureLineSymbol |
CreateFromFile() |
从文件创建 |
XScale() |
获取或者设置X方向缩放比例 |
|
YScale() |
获取或者设置Y方向缩放比例 |
|
ILineSymbol |
Color属性 |
获取或设置线的颜色 |
Width属性 |
获取或设置线的宽度 |
|
Cap属性 |
获取或设置线帽的样式 |
|
Join属性 |
获取或设置线的连接样式 |
|
MiterLimit |
获取或设置线的MiterLimit |
2.4.3. 示例代码
项目路径 |
百度云盘地址下/PIE示例程序/08元素绘制/02线的绘制 |
视频路径 |
百度云盘地址下/PIE视频教程/08元素绘制/02线的绘制.avi |
示例代码 |
|
1 /// <summary> 2 /// 图片为填充背景的线绘制 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void toolStripButton_DrawPicSyLine_Click(object sender, EventArgs e) 7 { 8 //IPolyline polyline = mapControl1.TrackLine(); 9 //定义空间位置 10 IPointCollection polyLine = new Polyline(); 11 polyLine.AddPoint(100, 100, 0); 12 polyLine.AddPoint(500, 400, 0); 13 //定义线元素 14 ILineElement lineElement = new PIE.Carto.LineElement(); 15 lineElement.Geometry = polyLine as IGeometry; 16 17 IPictureLineSymbol picLineSymbol = new PictureLineSymbol(); 18 OpenFileDialog openFileDialog = new OpenFileDialog(); 19 openFileDialog.Filter = "Picture File|*.bmp"; 20 openFileDialog.Title = "请选择一整图片:"; 21 if (openFileDialog.ShowDialog() != DialogResult.OK) return; 22 bool ok = picLineSymbol.CreateFromFile(openFileDialog.FileName); 23 if (ok) 24 { 25 picLineSymbol.XScale = 0.5; 26 picLineSymbol.YScale = 0.5; 27 28 ILineSymbol lineSymbol = picLineSymbol as ILineSymbol; 29 lineSymbol.Width = 50; 30 lineSymbol.Offset = 3; 31 lineSymbol.MiterLimit = 4; 32 lineElement.Symbol = lineSymbol; 33 mapControlMain.ActiveView.GraphicsContainer.AddElement(lineElement); 34 mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll); 35 } 36 } |
2.4.4. 示例截图
2.5. MultiLayerLineSymbol类型的点元素的绘制
2.5.1. 实现思路及原理说明
第一步 |
设置点的Geometry信息 |
第二步 |
设置线的符号 |
第三步 |
绘制元素 |
2.5.2. 核心接口与方法
接口/类 |
方法/属性 |
说明 |
ILineElement |
Geometry属性 |
获取或设置Geometry |
Symbol属性 |
获取或设置符号样式 |
|
IGraphicsContainer |
AddElement(IElement element) |
添加元素 |
IMultiLayerLineSymbol |
AddLayer() |
添加线符号样式图层 |
ILineSymbol |
Color属性 |
获取或设置线的颜色 |
Width属性 |
获取或设置线的宽度 |
|
Cap属性 |
获取或设置线帽的样式 |
|
Join属性 |
获取或设置线的连接样式 |
2.5.3. 示例代码
项目路径 |
百度云盘地址下/PIE示例程序/08元素绘制/02线的绘制 |
视频路径 |
百度云盘地址下/PIE视频教程/08元素绘制/02线的绘制.avi |
示例代码 |
|
1 /// <summary> 2 /// 多个符号叠加生成的线样式的线绘制 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void toolStripButton_DrawMultiSyLine_Click(object sender, EventArgs e) 7 { 8 //定义空间位置 9 IPointCollection polyLine = new Polyline(); 10 polyLine.AddPoint(100, 100, 0); 11 polyLine.AddPoint(500, 400, 0); 12 //定义线元素 13 ILineElement lineElement = new PIE.Carto.LineElement(); 14 lineElement.Geometry = polyLine as IGeometry; 15 16 #region IMultiLayerLineSymbol多个符号生成的线组成的符号 17 IMultiLayerLineSymbol mulLayerLineSymbol = new MultiLayerLineSymbol(); 18 //IPictureLineSymbol图片符号 19 IPictureLineSymbol picLineSymbol = new PictureLineSymbol(); 20 OpenFileDialog openFileDialog = new OpenFileDialog(); 21 openFileDialog.Filter = "Picture File|*.bmp"; 22 openFileDialog.Title = "请选择一整图片:"; 23 if (openFileDialog.ShowDialog() != DialogResult.OK) return; 24 bool ok = picLineSymbol.CreateFromFile(openFileDialog.FileName); 25 ILineSymbol lineSymbol = picLineSymbol as ILineSymbol; 26 if (ok) 27 { 28 picLineSymbol.XScale = 0.5; 29 picLineSymbol.YScale = 0.5; 30 lineSymbol.Width = 60; 31 lineSymbol.Offset = 3; 32 lineSymbol.MiterLimit = 4; 33 } 34 35 //IMarkLineSymbol 36 ISimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(); 37 simpleMarkerSymbol.Style = SimpleMarkerStyle.SMSCircle; 38 simpleMarkerSymbol.IsDrawOutline = true; 39 IMarkerSymbol markerSymbol = simpleMarkerSymbol as IMarkerSymbol; 40 markerSymbol.Size = 10; 41 markerSymbol.Color = Color.Green; 42 43 IMarkerLineSymbol markerLineSymbol = new MarkerLineSymbol(); 44 markerLineSymbol.MarkerSymbol = markerSymbol; 45 46 ILineSymbol lineSymbol2 = markerLineSymbol as ILineSymbol; 47 mulLayerLineSymbol.AddLayer(lineSymbol, false); 48 mulLayerLineSymbol.AddLayer(lineSymbol2, false); 49 50 lineElement.Symbol = mulLayerLineSymbol as ILineSymbol; 51 mapControlMain.ActiveView.GraphicsContainer.AddElement(lineElement); 52 mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll); 53 #endregion 54 } |