问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问各位高手,在用arcgis engine做开发时,如何将PageLayout中的内容生成 .mxt文件?跪求!多谢!

发布网友 发布时间:2022-04-23 11:23

我来回答

1个回答

热心网友 时间:2023-10-12 06:40

把对应的元素写成函数调用就行了。
/// <summary>
/// 添加默认固定指北针
/// </summary>
/// <param name="pageLayout"></param>
public static void AddNorthArrow(IPageLayout pageLayout)
{
IGraphicsContainer container = pageLayout as IGraphicsContainer;
IActiveView activeView = pageLayout as IActiveView;
// 获得MapFrame
IFrameElement frameElement = container.FindFrame(activeView.FocusMap);
IMapFrame mapFrame = frameElement as IMapFrame;
//根据MapSurround的uid,创建相应的MapSurroundFrame和MapSurround
UID uid = new UIDClass();
uid.Value = "esriCarto.MarkerNorthArrow";
IMapSurroundFrame mapSurroundFrame = mapFrame.CreateSurroundFrame(uid, null);
//设置MapSurroundFrame中指北针的点符号
IMapSurround mapSurround = mapSurroundFrame.MapSurround;
IMarkerNorthArrow markerNorthArrow = mapSurround as IMarkerNorthArrow;
IMarkerSymbol markerSymbol = markerNorthArrow.MarkerSymbol;
markerSymbol.Size = 30;
markerNorthArrow.MarkerSymbol = markerSymbol;
//QI,确定mapSurroundFrame的位置
IElement element = mapSurroundFrame as IElement;
IEnvelope envelope = new EnvelopeClass();
envelope.PutCoords(19.7, 27, 29,37 );
element.Geometry = envelope;
//使用IGraphicsContainer接口添加显示
container.AddElement(element, 0);
activeView.Refresh();
}

/// <summary>
/// 添加固定比例尺
/// </summary>
/// <param name="pageLayout"></param>
public static void AddScalebar(IPageLayout pageLayout)
{
IGraphicsContainer container = pageLayout as IGraphicsContainer;
IActiveView activeView = pageLayout as IActiveView;
// 获得MapFrame
IFrameElement frameElement = container.FindFrame(activeView.FocusMap);
IMapFrame mapFrame = frameElement as IMapFrame;
//根据MapSurround的uid,创建相应的MapSurroundFrame和MapSurround
UID uid = new UIDClass();
uid.Value = "esriCarto.AlternatingScaleBar";
IMapSurroundFrame mapSurroundFrame = mapFrame.CreateSurroundFrame(uid, null);
//设置MapSurroundFrame中比例尺的样式
IMapSurround mapSurround = mapSurroundFrame.MapSurround;
IScaleBar markerScaleBar = (IScaleBar)mapSurround;
markerScaleBar.LabelPosition = esriVertPosEnum.esriBelow;
markerScaleBar.UseMapSettings();
//QI,确定mapSurroundFrame的位置
IElement element = mapSurroundFrame as IElement;
IEnvelope envelope = new EnvelopeClass();
envelope.PutCoords(1.3, 1.3, 5, 2);
element.Geometry = envelope;
//使用IGraphicsContainer接口添加显示
container.AddElement(element, 0);
activeView.Refresh();
}

/// <summary>
/// 添加固定图例
/// </summary>
/// <param name="axPageLayoutControl1"></param>
public static void AddLegend(AxPageLayoutControl axPageLayoutControl1)
{
IPageLayout pageLayout = axPageLayoutControl1.PageLayout;
IGraphicsContainer container = pageLayout as IGraphicsContainer;
IActiveView activeView = pageLayout as IActiveView;
// 获得MapFrame
IFrameElement frameElement = container.FindFrame(activeView.FocusMap);
//IMapFrame mapFrame = container.FindFrame(activeView.FocusMap) as IMapFrame;
IMapFrame mapFrame = frameElement as IMapFrame;

//根据MapSurround的uid,创建相应的MapSurroundFrame和MapSurround
UID uid = new UIDClass();
uid.Value = "esriCarto.Legend";
IMapSurroundFrame mapSurroundFrame = mapFrame.CreateSurroundFrame(uid, null);

//设置MapSurroundFrame背景
ISymbolBackground pSymbolBackground = new SymbolBackgroundClass();
ILineSymbol pLineSymbol = new SimpleLineSymbolClass();
pLineSymbol.Color = GetRgbColor(0, 0, 0);
IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = GetRgbColor(240, 240, 240);
pFillSymbol.Outline = pLineSymbol;
pSymbolBackground.FillSymbol = pFillSymbol;
mapSurroundFrame.Background = pSymbolBackground;

//设置图例的Title
ILegend2 legend = mapSurroundFrame.MapSurround as ILegend2;
legend.Title = "地图图例";
//新图层加载时自动更新
legend.AutoAdd = true;
ILegendFormat format = new LegendFormatClass();
ITextSymbol symbol = new TextSymbolClass();
symbol.Size = 0.3;
format.TitleSymbol = symbol;
legend.Format = format;
//QI,确定mapSurroundFrame的位置
IElement element = mapSurroundFrame as IElement;
IEnvelope envelope = new EnvelopeClass();
envelope.PutCoords(17.7, 1, 20, 9);
element.Geometry = envelope;
//使用IGraphicsContainer接口添加显示
container.AddElement(element, 0);
activeView.Refresh();
}

/// <summary>
/// 添加title
/// </summary>
/// <param name="pageLayout"></param>
/// <param name="s"></param>
public static void AddTitle(AxPageLayoutControl mainPageLayoutControl1, String s)
{
//找到PageLayout
IPageLayout pPageLayout = mainPageLayoutControl1.PageLayout;
//找到元素容器
IGraphicsContainer pGraphicsContainer = pPageLayout as IGraphicsContainer;
//创建元素
ITextElement pTextElement = new TextElementClass();
pTextElement.Text = s;
ITextSymbol pTextSymbol = new TextSymbolClass();//Text的符号样式
IRgbColor color = new RgbColorClass();
color.Green = 255;
color.Blue = 255;
color.Red = 0;
pTextSymbol.Color = color as ESRI.ArcGIS.Display.IColor;
pTextSymbol.Size = 20;
pTextSymbol.Color = GetRgbColor(0, 0, 0);
pTextElement.Symbol = pTextSymbol;
//设置位置
IElement pElement = pTextElement as IElement;
IEnvelope envelope = new EnvelopeClass();
envelope.PutCoords(9, 27.3, 13, 30);
pElement.Geometry = envelope;
//pElement.Geometry = mainPageLayoutControl1.TrackRectangle();
//将元素添加到容器中
pGraphicsContainer.AddElement(pElement, 0);
//刷新
mainPageLayoutControl1.Refresh();
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求大学生谈恋爱的各种弊端 大学生恋爱的利大于弊吗? 大学生谈恋爱的弊处 dnf现在站街16000的物攻 增加100物攻能张多少 家里养的蚕宝宝是要蜕皮了吗 富贵包硬和软的区别 【已完成】为什么腋窝突然有异味? 女生为什么有狐臭症状? 为什么会狐臭 万视宝这个牌子是做什么的?有人了解嘛? 如何设置2007 excel 默认page layout? 在 page layout中设置好字体、颜色后每次新建都会默认使用之前设置 如何在Page Layout上添加Scale bar ASP.NET VS2008中的页面找不到PageLayOut这个属性。。。 rcp中pagelayout什么功能 page-layout 是 什么意思 page layout是什么意思 ios白号是什么意思 缺少VCOMP110.DLL怎么解决 求vcomp110.dll丢失解决方法 计算机丢失vcomp110.dll求解 丢失VCOMP110.DLL怎么办v 丢失VCOMP110.DLL该怎么解决 win7 64位系统vcomp110.dll丢失怎么办 巫师3msvcr110.dll丢失怎么办,巫师3狂猎游戏打不开怎么办 win10巫师3丢失vcomp110.dll怎么办 《巫师3》提示缺失文件vcomp110.dll怎么解决? 巫师3丢失vcomp110.dll 怎么办 巫师3vcomp110.dll丢失怎么办 巫师3vcomp110.dll文件丢失怎么办 玩巫师3缺少vcomp110.dll文件怎么办? 环境布置用英语怎么说 AE 二次开发 点击按钮弹出ArcMap,并将pagelayout的地图传到ArcMap中 怎么把arcengine 中pagelayout的指北针调到右上角 什么是mapcontrol和pagelayoutcontrol两种视图的同步工作 怎样在.net环境下显示onpagelayoutReplaced 事件 page layout tab 是什么意思 在《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步中 ArcEngine开发,如何在axPageLayoutControl1添加图层? MAC上page如何编辑? 为什么mapcontrol控件和pagelayoutmapcontrol不能同时显示在tabcontrol中 怎样才能让电脑里的电源启动啊,是连接哪两根线? 电脑的电源怎么单独启动? 电脑机箱上的开机键,就是按一下主机通电启动那个开关,一般电压是多少?很多年前的老电脑也差不多数值么 电脑电源怎么强制开机啊? 电脑主机只要插上电源 就自动开机怎么办?求大神帮助 我的电脑主机一插电源就自动启动 电脑电源排线哪些是电源启动,重启功能? 电脑接通电源自动启动,但开不了机. 找工作用哪些app好用? 找工作用什么APP好?