cl991036
管理员
管理员
  • 注册日期2003-07-25
  • 发帖数5917
  • QQ14265545
  • 铜币29669枚
  • 威望217点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • GIS帝国铁杆
阅读:1620回复:1

AE创建气泡式的提示框(VB.Net和C#源码)

楼主#
更多 发布于:2008-07-17 18:07
<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>
喜欢0 评分0
没钱又丑,农村户口。头可断,发型一定不能乱。 邮箱:gisempire@qq.com
wkwang
路人甲
路人甲
  • 注册日期2009-05-23
  • 发帖数1
  • QQ
  • 铜币106枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2009-06-25 22:47
这么好的东西为什么没人响应呢,呵呵
举报 回复(0) 喜欢(0)     评分
游客

返回顶部