如何用ArcEngine画箭头,求具体C#代码
例如我知道箭头方向从(0,0)到(1,-1),怎样在MapControl中显示出来?此外箭头样式如何定义?...
例如我知道箭头方向从(0,0)到(1,-1),怎样在MapControl中显示出来?
此外箭头样式如何定义? 展开
此外箭头样式如何定义? 展开
1个回答
展开全部
不知道你是要画线还是画点,如果是画点的话:
//定义点
IPoint pPoint = new PointClass();
pPoint.PutCoords(X,Y);
//定义渲染点的符号,这里用字符渲染(也就是找一个箭头符号来渲染)
ICharacterMarkerSymbol pCharacterMarkerSymbol = new CharacterMarkerSymbolClass();
//定义字符的字体
IFontDisp pFontDisp = new StdFontClass() as IFontDisp;
pFontDisp.Name = "";//这里的字体选择,你可以在Windows系统工具里打开“字符映射表”,然后选择一种ESRI的字体,有很多,只要找一个有箭头符号的字体就行,对了还要记住箭头符号的索引,索引就是你点中箭头符号后,字符映射表左下角显示的类似“U+002:”(其中002就是索引)的东西,不过这是十六进制的,你需要把它转成10进制的索引,后面会用到)
pCharacterMarkerSymbol.Font = pFontDisp;
pCharacterMarkerSymbol.CharacterIndex = ;//这里就是上面说到的箭头符号在字体中的索引
pCharacterMarkerSymbol.Color = ;
pCharacterMarkerSymbol.Size = ;
pCharacterMarkerSymbol .Angle = ;//这里定义字符的旋转角度,以实现箭头的方向(角度的大小要看字符箭头本来的方向)
//定义点元素,最终加到mapcontrol的就是这些元素
IMarkerElement pMarkerElement = new MarkerElementClass();
pMarkerElement.Symbol = pCharacterMarkerSymbol;
IElement pElement = pMarkerElement as IElement;
pElement.Geometry = pPoint;
//定义画图的容器
IGraphicsContainer pGraphicsContainer = axMapControl1.Map as IGraphicsContainer;
IActiveView pActiveView = pGraphicsContainer as IActiveView;
//将元素添加到容器
pGraphicsContainer.AddElement(pElement, 0);
//刷新
pActiveView.Refresh();
//定义点
IPoint pPoint = new PointClass();
pPoint.PutCoords(X,Y);
//定义渲染点的符号,这里用字符渲染(也就是找一个箭头符号来渲染)
ICharacterMarkerSymbol pCharacterMarkerSymbol = new CharacterMarkerSymbolClass();
//定义字符的字体
IFontDisp pFontDisp = new StdFontClass() as IFontDisp;
pFontDisp.Name = "";//这里的字体选择,你可以在Windows系统工具里打开“字符映射表”,然后选择一种ESRI的字体,有很多,只要找一个有箭头符号的字体就行,对了还要记住箭头符号的索引,索引就是你点中箭头符号后,字符映射表左下角显示的类似“U+002:”(其中002就是索引)的东西,不过这是十六进制的,你需要把它转成10进制的索引,后面会用到)
pCharacterMarkerSymbol.Font = pFontDisp;
pCharacterMarkerSymbol.CharacterIndex = ;//这里就是上面说到的箭头符号在字体中的索引
pCharacterMarkerSymbol.Color = ;
pCharacterMarkerSymbol.Size = ;
pCharacterMarkerSymbol .Angle = ;//这里定义字符的旋转角度,以实现箭头的方向(角度的大小要看字符箭头本来的方向)
//定义点元素,最终加到mapcontrol的就是这些元素
IMarkerElement pMarkerElement = new MarkerElementClass();
pMarkerElement.Symbol = pCharacterMarkerSymbol;
IElement pElement = pMarkerElement as IElement;
pElement.Geometry = pPoint;
//定义画图的容器
IGraphicsContainer pGraphicsContainer = axMapControl1.Map as IGraphicsContainer;
IActiveView pActiveView = pGraphicsContainer as IActiveView;
//将元素添加到容器
pGraphicsContainer.AddElement(pElement, 0);
//刷新
pActiveView.Refresh();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询