|
阅读:1620回复:1
AE创建气泡式的提示框(VB.Net和C#源码)
<br><br><font style="background-color: rgb(204, 232, 207);" face="Verdana"><font style="background-color: rgb(204, 232, 207);" face="Verdana"><strong style="color: rgb(0, 0, 0);">下面是用AE创建气泡式提示框的方法:</strong><br>
<strong style="color: rgb(0, 0, 0);"> <br> 1、VB.Net源码</strong><br> ''' <summary><br> ''' 创建文本提示框<br> ''' </summary><br> ''' <param name="x">提示框标识的位置X坐标</param><br> ''' <param name="y">提示框标识的位置Y坐标</param><br> ''' <param name="pTextString">提示框中显示的文本</param><br> ''' <param name="pPoint">提示框箭头指向的点</param><br> ''' <param name="pGraphicsContainer">包含提示框的graphicscontainer</param><br> ''' <returns></returns><br> ''' <remarks></remarks></font><br> Public Function CreateTextElement(ByVal x As Double, ByVal y As Double, ByVal pTextString As String, Optional ByVal pPoint As IPoint = Nothing, Optional ByVal pGraphicsContainer As IGraphicsContainer = Nothing) As IElement<br> Dim pElement As IElement = New MarkerElementClass()<br> Dim pTElement As IElement = New TextElementClass()<br> Dim pTextSymbol As IFormattedTextSymbol = New TextSymbolClass()<br> Dim pBalloonCallout As IBalloonCallout = CreateBalloonCallout(x, y)<br> Dim pColor As IRgbColor = New RgbColorClass()<br> pColor.Red = 150<br> pColor.Green = 0<br> pColor.Blue = 0<br> pTextSymbol.Color = pColor<br> Dim pTextBackground As ITextBackground<br> pTextBackground = pBalloonCallout<br> pTextSymbol.Background = pTextBackground<br> pTextSymbol.Size = 8<br> CType(pTElement, ITextElement).Symbol = pTextSymbol<br> CType(pTElement, ITextElement).Text = pTextString<br> If pPoint Is Nothing Then pPoint = New Point : pPoint.PutCoords(x + Const_Dis, y + Const_Dis)<br> pTElement.Geometry = pPoint<br> pGraphicsContainer.AddElement(pTElement, 1)<br> Return pTElement<br> End Function<br> <br> ''' <summary><br> ''' 创建balloon型提示框<br> ''' </summary><br> ''' <param name="x">提示框所在位置X坐标</param><br> ''' <param name="y">提示框所在位置Y坐标</param><br> ''' <returns></returns><br> ''' <remarks></remarks><br> Public Function CreateBalloonCallout(ByVal x As Double, ByVal y As Double) As IBalloonCallout<br> Dim pRgbClr As IRgbColor = New RgbColorClass()<br> pRgbClr.Red = 255<br> pRgbClr.Blue = 255<br> pRgbClr.Green = 255<br> Dim pSmplFill As ISimpleFillSymbol = New SimpleFillSymbolClass()<br> pSmplFill.Color = pRgbClr<br> pSmplFill.Style = esriSimpleFillStyle.esriSFSSolid<br> Dim pBllnCallout As IBalloonCallout = New BalloonCalloutClass()<br> pBllnCallout.Style = esriBalloonCalloutStyle.esriBCSRoundedRectangle<br> pBllnCallout.Symbol = pSmplFill<br> pBllnCallout.LeaderTolerance = 1<br> Dim pPoint As IPoint = New ESRI.ArcGIS.Geometry.PointClass()<br> pPoint.X = x<br> pPoint.Y = y<br> pBllnCallout.AnchorPoint = pPoint<br> Return pBllnCallout<br> End Function<br> <br> <br> <strong><strong> 2、C#源码</strong><br> <br> </strong><font style="color: rgb(0, 0, 255); background-color: rgb(204, 232, 207);" face="Verdana"> public void CreateTextElment(double x, double y)<br> {<br> IPoint pPoint = new PointClass();<br> IMap pMap = axMapControl1.Map;<br> IActiveView pActiveView = pMap as IActiveView;<br> IGraphicsContainer pGraphicsContainer;<br> IElement pElement = new MarkerElementClass();<br> IElement pTElement = new TextElementClass();<br> pGraphicsContainer = (IGraphicsContainer)pActiveView;<br> IFormattedTextSymbol pTextSymbol = new TextSymbolClass();<br> IBalloonCallout pBalloonCallout = CreateBalloonCallout(x, y);<br> IRgbColor pColor = new RgbColorClass();<br> pColor.Red = 150;<br> pColor.Green = 0;<br> pColor.Blue = 0;<br> pTextSymbol.Color = pColor;<br> ITextBackground pTextBackground;<br> pTextBackground = (ITextBackground)pBalloonCallout;<br> pTextSymbol.Background = pTextBackground;<br> ((ITextElement)pTElement).Symbol = pTextSymbol;<br> ((ITextElement)pTElement).Text = "测试";<br> pPoint.X = x + 42;<br> pPoint.Y = y + 42;<br> pTElement.Geometry = pPoint;<br> pGraphicsContainer.AddElement(pTElement, 1);<br> pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);<br> }<br> <br> public IBalloonCallout CreateBalloonCallout(double x, double y)<br> {<br> IRgbColor pRgbClr = new RgbColorClass();<br> pRgbClr.Red = 255;<br> pRgbClr.Blue = 255;<br> pRgbClr.Green = 255;<br> ISimpleFillSymbol pSmplFill = new SimpleFillSymbolClass();<br> pSmplFill.Color = pRgbClr;<br> pSmplFill.Style = esriSimpleFillStyle.esriSFSSolid;<br> IBalloonCallout pBllnCallout = new BalloonCalloutClass();<br> pBllnCallout.Style = esriBalloonCalloutStyle.esriBCSRectangle;<br> pBllnCallout.Symbol = pSmplFill;<br> pBllnCallout.LeaderTolerance = 1;<br> IPoint pPoint = new ESRI.ArcGIS.Geometry.PointClass();<br> pPoint.X = x;<br> pPoint.Y = y;<br> pBllnCallout.AnchorPoint = pPoint;<br> return pBllnCallout;<br> }</font></font><br> |
|
|
|
1楼#
发布于:2009-06-25 22:47
这么好的东西为什么没人响应呢,呵呵
|
|