1. 功能簡介ide
在數據的處理中會用到點元素的繪製,目前PIE SDK支持IMarkerSymbol的點元素的繪製,MarkerSymbol對象是用於修飾點狀對象的符號,它包括ArrowMarkerSymbol(箭頭形式的符號)、CharacterMarkerSymbol(字符形式的點符號)、MultiLayerMarkerSymbol(多個符號疊加生成的新的點符號)、PictureMarkerSymbol(以圖片爲背景的點符號)、SimpleMarkerSymbol(簡單類型的點符號)這5個不一樣類型點符號的子類。下面對點元素的繪製功能進行介紹。字體
2. 功能實現說明spa
第一步3d |
設置點的Geometry信息code |
第二步視頻 |
設置點的符號對象 |
第三步blog |
繪製元素教程 |
接口/類接口 |
方法/屬性 |
說明 |
IMarkerElement |
Geometry屬性 |
獲取或設置Geometry |
Symbol屬性 |
獲取或設置符號樣式 |
|
IGraphicsContainer |
AddElement(IElement element) |
添加要素 |
ISimpleMarkerSymbol |
Style屬性 |
樣式 |
項目路徑 |
百度雲盤地址下/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 } |
2.2. ArrowMarkerSymbol類型的點元素的繪製
第一步 |
設置點的Geometry信息 |
第二步 |
設置點的符號 |
第三步 |
繪製元素 |
接口/類 |
方法/屬性 |
說明 |
IMarkerElement |
Geometry屬性 |
獲取或設置Geometry |
Symbol屬性 |
獲取或設置符號樣式 |
|
IGraphicsContainer |
AddElement(IElement element) |
添加要素 |
IArrowMarkerSymbol |
Length屬性 |
符號的長度 |
Width屬性 |
符號的寬度 |
項目路徑 |
百度雲盤地址下/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 } |
2.3. CharacterMarkerSymbol類型的點元素的繪製
第一步 |
設置點的Geometry信息 |
第二步 |
設置點的符號 |
第三步 |
繪製元素 |
接口/類 |
方法/屬性 |
說明 |
IMarkerElement |
Geometry屬性 |
獲取或設置Geometry |
Symbol屬性 |
獲取或設置符號樣式 |
|
IGraphicsContainer |
AddElement(IElement element) |
添加要素 |
ICharacterMarkerSymbol |
CharacterIndex屬性 |
獲取或設置字體符號的編號 |
Font屬性 |
獲取或設置字體 |
|
IMarkerSymbol |
Color,Size等屬性 |
顏色,大小等屬性 |
項目路徑 |
百度雲盤地址下/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 } |
2.4. PictureMarkerSymbol類型的點元素的繪製
第一步 |
設置點的Geometry信息 |
第二步 |
設置點的符號 |
第三步 |
繪製元素 |
接口/類 |
方法/屬性 |
說明 |
IMarkerElement |
Geometry屬性 |
獲取或設置Geometry |
Symbol屬性 |
獲取或設置符號樣式 |
|
IGraphicsContainer |
AddElement(IElement element) |
添加要素 |
IPictureMarkerSymbol |
CreateFromFile(string filePath) |
從文件建立 |
項目路徑 |
百度雲盤地址下/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 } |
2.5. MultiLayerMarkerSymbol類型的點元素的繪製
第一步 |
設置點的Geometry信息 |
第二步 |
設置點的符號 |
第三步 |
繪製元素 |
接口/類 |
方法/屬性 |
說明 |
IMarkerElement |
Geometry屬性 |
獲取或設置Geometry |
Symbol屬性 |
獲取或設置符號樣式 |
|
IGraphicsContainer |
AddElement(IElement element) |
添加要素 |
IMultiLayerMarkerSymbol |
AddLayer(…) |
添加點符號樣式圖層 |
IMarkerSymbol |
Size,Color等屬性 |
獲取或設置大小和顏色等屬性值 |
項目路徑 |
百度雲盤地址下/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 } |