首页 / 浏览问题 / 组件GIS / 问题详情
iobject.net 布局添加文字
17EXP 2020年06月01日

请问,maplayout应该如何做添加文字内容,可以修改文字内容,拉伸修改大小,并能换行?

我才用action.createText方法,效果不太好,不能变成多行,不能拉伸放大缩小:

代码:     mapLayoutControl.LayoutAction = SuperMap.UI.Action.CreateText;
            mapLayoutControl.Tracked += mapLayoutControl_Tracked;

  void mapLayoutControl_Tracked(object sender, TrackedEventArgs e)
        {
          
            GeoText geoText = e.Geometry as GeoText;
            TextStyle style = new TextStyle();
            style.Alignment = TextAlignment.MiddleCenter;
            style.FontName = "宋体";
            //style.FontHeight = 4;
            geoText.TextStyle = style;
                String text = "";


                text = this.textBox2.Text;
           
                geoText[0].Text = text;


        }

想实现和idesktop 中布局视图添加文本那种效果,应该如何实现?

1个回答

桌面这部分是自己去实现的,实现思路就是在这个地方添加了一个类似于textbox控件,然后再textbox中输入文件,确定后根据这个构造了一个geotext,然后通过代码添加到布局元素里面。
4,620EXP 2020年06月03日

请问那个输入控件,是自己做的控件,还是用的什么控件?

那个用了textstyle或者textpart.text获取文本内容,文本效果就无法进行放大缩小?是不能使用这个textstyle设置样式吗或使用textpart.text传递文本内容

去掉textstyle,

GeoText geoText = e.Geometry as GeoText;
TextStyle style = new TextStyle();
style.Alignment = TextAlignment.MiddleCenter;
style.FontName = "宋体";
//style.FontHeight = 4;
geoText.TextStyle = style;

String text = "";
text = inputText;
geoText[0].Text = text;
geoText.ID = mapID;
bool k = this.mapLayoutControl.MapLayout.Elements.AddNew(geoText);
this.mapLayoutControl.MapLayout.Refresh();
this.mapLayoutControl.Refresh();

textpart:

TextPart text = new TextPart();
TextStyle style = new TextStyle();
Point2D point = new Point2D(mapLayout.Paper.Width / 2, mapLayout.Paper.Height - 330);
text.AnchorPoint = point;
style.Alignment = TextAlignment.MiddleCenter;
//style.AlignmentString =SuperMap.Data.StringAlignment.Center;
style.FontHeight = 5;
style.FontName = "宋体";
text.Text = this.textBox1.Text;

GeoText geotext = new GeoText(text, style);
mapLayout.Elements.AddNew(geotext);

...