面朝大海,春暖华开

focus on scientific computue, 3dgis, spatial database
专注于科学计算、GIS空间分析

 

arcEngine经典代码-添加气泡提示框(标注,文本,)

    private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
        {
       
            if (i >= 3)//测试目的
                return;
            i++;

            ITextElement te = createTextElement(e.mapX,e.mapY,"魁x");
            axMapControl1.ActiveView.GraphicsContainer.AddElement(te as IElement, 1);
            axMapControl1.Refresh(esriViewDrawPhase.esriViewGraphics, null, null);

    
        }
        int i;

        public IBalloonCallout createBalloonCallout(double x, double y)
        {
            IRgbColor rgb = new RgbColorClass();
            {
                rgb.Red = 255;
                rgb.Green = 255;
                rgb.Blue = 200;

            }
            ISimpleFillSymbol sfs = new SimpleFillSymbolClass();
            {
                sfs.Color = rgb;
                sfs.Style = esriSimpleFillStyle.esriSFSSolid;
            }

            IPoint p = new PointClass();
            {
                p.PutCoords(x, y);
            }

            IBalloonCallout bc = new BalloonCalloutClass();
            {
                bc.Style = esriBalloonCalloutStyle.esriBCSRoundedRectangle;
                //
                bc.Symbol = sfs;
                //
                bc.LeaderTolerance = 10;
                //1

                bc.AnchorPoint = p;
            }

            return bc;
        }

        public ITextElement createTextElement(double x, double y, string text)
        {
            IBalloonCallout bc = createBalloonCallout(x, y);
           
            IRgbColor rgb = new RgbColorClass();
            {
                //rgb.Red = 255;
                rgb.Green = 255;
            }
            ITextSymbol ts = new TextSymbolClass();
            {
                ts.Color = rgb;
            }

            IFormattedTextSymbol fts = ts as IFormattedTextSymbol;
            {
                fts.Background = bc as ITextBackground;
            }
            //fts.Size = 8;
            ts.Size = 8;

            IPoint point = new PointClass();
            {
                double width = axMapControl1.Extent.Width / 13;
                double height = axMapControl1.Extent.Height / 20;
                point.PutCoords(x + width, y + height);
            }

            ITextElement te = new TextElementClass();
            //IMarkerElement me = new MarkerElementClass();
            {
                te.Symbol = ts;
                //ts.Text = text;
                te.Text = text;
            }

            IElement e = te as IElement;
            {
                e.Geometry = point;
            }
            return te;

        }
    }

posted on   风过 无痕  阅读(3850)  评论(1编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

统计

向日葵支付宝收钱码
点击右上角即可分享
微信分享提示