• PIE SDK点元素的绘制


     

    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

    示例代码

     1          /// <summary>
     2         /// 简单点样式的点绘制
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         private void toolStripButton_DrawSimplePoint_Click(object sender, EventArgs e)
     7         {
     8             //1.设置空间信息
     9             IPoint point = new PIE.Geometry.Point();
    10             point.PutCoords(200, 200, 0);
    11             IMarkerElement markerElement = new MarkerElement();
    12             markerElement.Geometry = point as IGeometry;
    13 
    14             //2.设置符号信息
    15             ISimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol();
    16             simpleMarkerSymbol.Style = SimpleMarkerStyle.SMSCircle;
    17             markerElement.Symbol = simpleMarkerSymbol as IMarkerSymbol;
    18 
    19             //3.绘制元素,刷新显示           mapControlMain.ActiveView.GraphicsContainer.AddElement(markerElement);            mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
    20         }
    View Code

    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

    示例代码

     1         /// <summary>
     2        /// 箭头填充样式的点绘制
     3        /// </summary>
     4        /// <param name="sender"></param>
     5        /// <param name="e"></param>
     6         private void toolStripButton_DrawArrowMarkerSyPoint_Click(object sender, EventArgs e)
     7         {
     8             IPoint point = new PIE.Geometry.Point();
     9             point.PutCoords(200, 200, 0);
    10             IMarkerElement markerElement = new MarkerElement();
    11             markerElement.Geometry = point as IGeometry;
    12 
    13             //2.设置符号信息
    14             IArrowMarkerSymbol arrowMarkSymbol = new ArrowMarkerSymbol();
    15             arrowMarkSymbol.Length = 100;
    16             arrowMarkSymbol.Width = 20;
    17             markerElement.Symbol = arrowMarkSymbol as IMarkerSymbol;
    18 
    19             //3.绘制元素,刷新显示           mapControlMain.ActiveView.GraphicsContainer.AddElement(markerElement);          mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
    20         }  
    View Code

    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

    示例代码

     1         /// <summary>
     2         /// 字符样式填充的点绘制
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         private void toolStripButton_DrawCharacterSyPoint_Click(object sender, EventArgs e)
     7         {
     8             //1.设置空间信息
     9             IPoint point = new PIE.Geometry.Point();
    10             point.PutCoords(200, 200, 0);
    11             IMarkerElement markerElement = new MarkerElement();
    12             markerElement.Geometry = point as IGeometry;
    13             //定义点状符号
    14             ICharacterMarkerSymbol characterMSymbol = new CharacterMarkerSymbol();
    15             characterMSymbol.CharacterIndex = 111;//飞机
    16             System.Drawing.Font font = new Font("ESRI Default Marker", 20);
    17             characterMSymbol.Font = font;
    18             //characterMSymbol,颜色,偏移量
    19             IMarkerSymbol markSymbol = characterMSymbol as IMarkerSymbol;
    20             markSymbol.XOffset = 20;
    21             markSymbol.YOffset = 40;
    22             markSymbol.Size = 24;
    23             markSymbol.Color = Color.Red;
    24             markerElement.Symbol = markSymbol;
    25             mapControlMain.ActiveView.GraphicsContainer.AddElement(markerElement);            mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
    26         } 
    View Code

    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

    示例代码

     1         /// <summary>
     2         /// 图片样式填充的点绘制
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         private void toolStripButton_DrawPicSyPoint_Click(object sender, EventArgs e)
     7         {
     8             //1.设置空间信息
     9             IPoint point = new PIE.Geometry.Point();
    10             point.PutCoords(200, 200, 0);
    11             IMarkerElement markerElement = new MarkerElement();
    12             markerElement.Geometry = point as IGeometry;
    13 
    14             //2.设置符号信息
    15             IPictureMarkerSymbol picMarkSymbol = new PictureMarkerSymbol();
    16             OpenFileDialog openFileDialog = new OpenFileDialog();
    17             openFileDialog.Filter = "Picture File|*.bmp";//jpg的格式不支持
    18             openFileDialog.Title = "选择一张图片:";
    19             openFileDialog.Multiselect = false;
    20             if (openFileDialog.ShowDialog() != DialogResult.OK) return;
    21             string picFilePath = openFileDialog.FileName;
    22             bool ok = picMarkSymbol.CreateFromFile(picFilePath);
    23             if (ok)
    24             {
    25                 markerElement.Symbol = picMarkSymbol as IMarkerSymbol;
    26                 mapControlMain.ActiveView.GraphicsContainer.AddElement(markerElement);
    27                 mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
    28             }
    29         }
    View Code

    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

    示例代码

     1          /// <summary>
     2         /// 多图层样式填充的点绘制
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         private void toolStripButton_DrawMultiLayeSyPoint_Click(object sender, EventArgs e)
     7         {
     8             //1.设置空间信息
     9             IPoint point = new PIE.Geometry.Point();
    10             point.PutCoords(200, 200, 0);
    11             IMarkerElement markerElement = new MarkerElement();
    12             markerElement.Geometry = point as IGeometry;
    13 
    14             //2.设置符号信息
    15             // 定义第一个字体符号
    16             ICharacterMarkerSymbol characterMSymbol1 = new CharacterMarkerSymbol();
    17             characterMSymbol1.CharacterIndex = 111;//飞机形状
    18             System.Drawing.Font font = new Font("ESRI Default Marker", 20);
    19             characterMSymbol1.Font = font;
    20 
    21             // 设置颜色、大小、偏移,角度
    22             IMarkerSymbol markerSymbol1 = characterMSymbol1 as IMarkerSymbol;
    23             markerSymbol1.Size = 24;
    24             markerSymbol1.Color = System.Drawing.Color.Red;
    25             markerSymbol1.XOffset = 0;
    26             markerSymbol1.YOffset = 0;
    27             // markerSymbol1.Angle = 30;
    28 
    29             // 定义第二个字体符号
    30             ICharacterMarkerSymbol characterMSymbol2 = new CharacterMarkerSymbol();
    31             characterMSymbol2.CharacterIndex = 41;//正方形框
    32             characterMSymbol2.Font = font;
    33 
    34             // 设置颜色、大小、偏移,角度
    35             IMarkerSymbol markerSymbol2 = characterMSymbol2 as IMarkerSymbol;
    36             markerSymbol2.Size = 36;
    37             markerSymbol2.Color = System.Drawing.Color.Blue;
    38             markerSymbol2.XOffset = 0;
    39             markerSymbol2.YOffset = 0;
    40             // markerSymbol2.Angle = 30;
    41 
    42             IMultiLayerMarkerSymbol multiLayerMSymbol = new MultiLayerMarkerSymbol();
    43             multiLayerMSymbol.AddLayer(markerSymbol2, false);
    44             multiLayerMSymbol.AddLayer(markerSymbol1, false);
    45 
    46             markerElement.Geometry = point as IGeometry;
    47             markerElement.Symbol = multiLayerMSymbol as IMarkerSymbol;
    48             //3.绘制元素,刷新显示
    49             mapControlMain.ActiveView.GraphicsContainer.AddElement(markerElement);
    50             mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
    51         }   
    View Code

    2.5.4. 示例截图

     

  • 相关阅读:
    LuoguP2763 试题库问题(最大流)
    LuoguP3254 圆桌问题(最大流)
    LuoguP2765 魔术球问题(最大流)
    LuoguP2764 最小路径覆盖问题(最大流)
    LuoguP4016 负载平衡问题(费用流)
    LuoguP2756 飞行员配对方案问题(最大流)
    BZOJ3675: [Apio2014]序列分割(斜率优化Dp)
    BZOJ1814: Ural 1519 Formula 1(插头Dp)
    BZOJ4652: [Noi2016]循环之美(莫比乌斯反演,杜教筛)
    BZOJ4916: 神犇和蒟蒻(杜教筛)
  • 原文地址:https://www.cnblogs.com/PIESat/p/10169850.html
Copyright © 2020-2023  润新知