1. 功能简介
在数据的处理中会用到点元素的绘制,目前PIE SDK支持IMarkerSymbol的点元素的绘制,MarkerSymbol对象是用于修饰点状对象的符号,它包括ArrowMarkerSymbol(箭头形式的符号)、CharacterMarkerSymbol(字符形式的点符号)、MultiLayerMarkerSymbol(多个符号叠加生成的新的点符号)、PictureMarkerSymbol(以图片为背景的点符号)、SimpleMarkerSymbol(简单类型的点符号)这5个不同类型点符号的子类。下面对点元素的绘制功能进行介绍。
2. 功能实现说明
2.1. SimpleMarkerSymbol类型的点元素的绘制
2.1.1. 实现思路及原理说明
第一步 | 设置点的Geometry信息 |
第二步 | 设置点的符号 |
第三步 | 绘制元素 |
2.1.2. 核心接口与方法
接口/类 | 方法/属性 | 说明 |
IMarkerElement | Geometry属性 | 获取或设置Geometry |
Symbol属性 | 获取或设置符号样式 |
IGraphicsContainer | AddElement(IElement element) | 添加要素 |
ISimpleMarkerSymbol | Style属性 | 样式 |
2.1.3. 示例代码
项目路径 | 百度云盘地址下/PIE示例程序/08元素绘制/01点的绘制 |
视频路径 | 百度云盘地址下/PIE视频教程/08元素绘制/01点的绘制.avi |
示例代码 |
/// <summary>
/// 简单点样式的点绘制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton_DrawSimplePoint_Click(object sender, EventArgs e)
{
//1.设置空间信息
IPoint point = new PIE.Geometry.Point();
point.PutCoords(, , );
IMarkerElement markerElement = new MarkerElement();
markerElement.Geometry = point as IGeometry;
//2.设置符号信息
ISimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol();
simpleMarkerSymbol.Style = SimpleMarkerStyle.SMSCircle;
markerElement.Symbol = simpleMarkerSymbol as IMarkerSymbol;
//3.绘制元素,刷新显示 mapControlMain.ActiveView.GraphicsContainer.AddElement(markerElement); mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
} |
2.1.4. 示例截图
2.2. ArrowMarkerSymbol类型的点元素的绘制
2.2.1. 实现思路及原理说明
第一步 | 设置点的Geometry信息 |
第二步 | 设置点的符号 |
第三步 | 绘制元素 |
2.2.2 . 核心接口与方法
接口/类 | 方法/属性 | 说明 |
IMarkerElement | Geometry属性 | 获取或设置Geometry |
Symbol属性 | 获取或设置符号样式 |
IGraphicsContainer | AddElement(IElement element) | 添加要素 |
IArrowMarkerSymbol | Length属性 | 符号的长度 |
Width属性 | 符号的宽度 |
2.2.3. 示例代码
项目路径 | 百度云盘地址下/PIE示例程序/08元素绘制/01点的绘制 |
视频路径 | 百度云盘地址下/PIE视频教程/08元素绘制/01点的绘制.avi |
示例代码 |
/// <summary>
/// 箭头填充样式的点绘制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton_DrawArrowMarkerSyPoint_Click(object sender, EventArgs e)
{
IPoint point = new PIE.Geometry.Point();
point.PutCoords(, , );
IMarkerElement markerElement = new MarkerElement();
markerElement.Geometry = point as IGeometry;
//2.设置符号信息
IArrowMarkerSymbol arrowMarkSymbol = new ArrowMarkerSymbol();
arrowMarkSymbol.Length = ;
arrowMarkSymbol.Width = ;
markerElement.Symbol = arrowMarkSymbol as IMarkerSymbol;
//3.绘制元素,刷新显示 mapControlMain.ActiveView.GraphicsContainer.AddElement(markerElement); mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
} |
2.2.4. 示例截图
2.3. CharacterMarkerSymbol类型的点元素的绘制
2.3.1. 实现思路及原理说明
第一步 | 设置点的Geometry信息 |
第二步 | 设置点的符号 |
第三步 | 绘制元素 |
2.3.2. 核心接口与方法
接口/类 | 方法/属性 | 说明 |
IMarkerElement | Geometry属性 | 获取或设置Geometry |
Symbol属性 | 获取或设置符号样式 |
IGraphicsContainer | AddElement(IElement element) | 添加要素 |
ICharacterMarkerSymbol | CharacterIndex属性 | 获取或设置字体符号的编号 |
Font属性 | 获取或设置字体 |
IMarkerSymbol | Color,Size等属性 | 颜色,大小等属性 |
2.3.3. 示例代码
项目路径 | 百度云盘地址下/PIE示例程序/08元素绘制/01点的绘制 |
视频路径 | 百度云盘地址下/PIE视频教程/08元素绘制/01点的绘制.avi |
示例代码 |
/// <summary>
/// 字符样式填充的点绘制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton_DrawCharacterSyPoint_Click(object sender, EventArgs e)
{
//1.设置空间信息
IPoint point = new PIE.Geometry.Point();
point.PutCoords(, , );
IMarkerElement markerElement = new MarkerElement();
markerElement.Geometry = point as IGeometry;
//定义点状符号
ICharacterMarkerSymbol characterMSymbol = new CharacterMarkerSymbol();
characterMSymbol.CharacterIndex = ;//飞机
System.Drawing.Font font = new Font("ESRI Default Marker", );
characterMSymbol.Font = font;
//characterMSymbol,颜色,偏移量
IMarkerSymbol markSymbol = characterMSymbol as IMarkerSymbol;
markSymbol.XOffset = ;
markSymbol.YOffset = ;
markSymbol.Size = ;
markSymbol.Color = Color.Red;
markerElement.Symbol = markSymbol;
mapControlMain.ActiveView.GraphicsContainer.AddElement(markerElement); mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
} |
2.3.4. 示例截图
2.4. PictureMarkerSymbol类型的点元素的绘制
2.4.1. 实现思路及原理说明
第一步 | 设置点的Geometry信息 |
第二步 | 设置点的符号 |
第三步 | 绘制元素 |
2.4.2. 核心接口与方法
接口/类 | 方法/属性 | 说明 |
IMarkerElement | Geometry属性 | 获取或设置Geometry |
Symbol属性 | 获取或设置符号样式 |
IGraphicsContainer | AddElement(IElement element) | 添加要素 |
IPictureMarkerSymbol | CreateFromFile(string filePath) | 从文件创建 |
2.4.3. 示例代码
项目路径 | 百度云盘地址下/PIE示例程序/08元素绘制/01点的绘制 |
视频路径 | 百度云盘地址下/PIE视频教程/08元素绘制/01点的绘制.avi |
示例代码 |
/// <summary>
/// 图片样式填充的点绘制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton_DrawPicSyPoint_Click(object sender, EventArgs e)
{
//1.设置空间信息
IPoint point = new PIE.Geometry.Point();
point.PutCoords(, , );
IMarkerElement markerElement = new MarkerElement();
markerElement.Geometry = point as IGeometry;
//2.设置符号信息
IPictureMarkerSymbol picMarkSymbol = new PictureMarkerSymbol();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Picture File|*.bmp";//jpg的格式不支持
openFileDialog.Title = "选择一张图片:";
openFileDialog.Multiselect = false;
if (openFileDialog.ShowDialog() != DialogResult.OK) return;
string picFilePath = openFileDialog.FileName;
bool ok = picMarkSymbol.CreateFromFile(picFilePath);
if (ok)
{
markerElement.Symbol = picMarkSymbol as IMarkerSymbol;
mapControlMain.ActiveView.GraphicsContainer.AddElement(markerElement);
mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
}
} |
2.4.4. 示例截图
2.5. MultiLayerMarkerSymbol类型的点元素的绘制
2.5.1. 实现思路及原理说明
第一步 | 设置点的Geometry信息 |
第二步 | 设置点的符号 |
第三步 | 绘制元素 |
2.5.2. 核心接口与方法
接口/类 | 方法/属性 | 说明 |
IMarkerElement | Geometry属性 | 获取或设置Geometry |
Symbol属性 | 获取或设置符号样式 |
IGraphicsContainer | AddElement(IElement element) | 添加要素 |
IMultiLayerMarkerSymbol | AddLayer(…) | 添加点符号样式图层 |
IMarkerSymbol | Size,Color等属性 | 获取或设置大小和颜色等属性值 |
2.5.3. 示例代码
项目路径 | 百度云盘地址下/PIE示例程序/08元素绘制/01点的绘制 |
视频路径 | 百度云盘地址下/PIE视频教程/08元素绘制/01点的绘制.avi |
示例代码 |
/// <summary>
/// 多图层样式填充的点绘制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton_DrawMultiLayeSyPoint_Click(object sender, EventArgs e)
{
//1.设置空间信息
IPoint point = new PIE.Geometry.Point();
point.PutCoords(, , );
IMarkerElement markerElement = new MarkerElement();
markerElement.Geometry = point as IGeometry;
//2.设置符号信息
// 定义第一个字体符号
ICharacterMarkerSymbol characterMSymbol1 = new CharacterMarkerSymbol();
characterMSymbol1.CharacterIndex = ;//飞机形状
System.Drawing.Font font = new Font("ESRI Default Marker", );
characterMSymbol1.Font = font;
// 设置颜色、大小、偏移,角度
IMarkerSymbol markerSymbol1 = characterMSymbol1 as IMarkerSymbol;
markerSymbol1.Size = ;
markerSymbol1.Color = System.Drawing.Color.Red;
markerSymbol1.XOffset = ;
markerSymbol1.YOffset = ;
// markerSymbol1.Angle = 30;
// 定义第二个字体符号
ICharacterMarkerSymbol characterMSymbol2 = new CharacterMarkerSymbol();
characterMSymbol2.CharacterIndex = ;//正方形框
characterMSymbol2.Font = font;
// 设置颜色、大小、偏移,角度
IMarkerSymbol markerSymbol2 = characterMSymbol2 as IMarkerSymbol;
markerSymbol2.Size = ;
markerSymbol2.Color = System.Drawing.Color.Blue;
markerSymbol2.XOffset = ;
markerSymbol2.YOffset = ;
// markerSymbol2.Angle = 30;
IMultiLayerMarkerSymbol multiLayerMSymbol = new MultiLayerMarkerSymbol();
multiLayerMSymbol.AddLayer(markerSymbol2, false);
multiLayerMSymbol.AddLayer(markerSymbol1, false);
markerElement.Geometry = point as IGeometry;
markerElement.Symbol = multiLayerMSymbol as IMarkerSymbol;
//3.绘制元素,刷新显示
mapControlMain.ActiveView.GraphicsContainer.AddElement(markerElement);
mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
} |
2.5.4. 示例截图