GIS二次开发实验指导书(实验5)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五PageLayout属性设置与元素绘制
1、新建项目,设置窗体界面如下:
2、在主窗体的Load事件中添加如下代码:
private void FormMain_Load(object sender, EventArgs e)
{
Microsoft.Win32.RegistryKey pRegKey =
Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\ESRI\\CoreRuntime", true);
axSymbologyControl1.LoadStyleFile(pRegKey.GetValue("InstallDir") +
"\\Styles\\ESRI.ServerStyle");
axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassBackgrounds).Update ();
axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassBorders).Update();
axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassShadows).Update(); }
3、在“设置边框”按钮的Click事件中添加如下代码:
private void ButtonBorder_Click(object sender, EventArgs e)
{
axSymbologyControl1.StyleClass = esriSymbologyStyleClass.esriStyleClassBorders; }
4、在“设置阴影”按钮的Click事件中添加如下代码:
private void ButtonShadows_Click(object sender, EventArgs e)
{
axSymbologyControl1.StyleClass = esriSymbologyStyleClass.esriStyleClassShadows; }
5、在“设置背景”按钮的Click事件中添加如下代码:
private void ButtonBackground_Click(object sender, EventArgs e)
{
axSymbologyControl1.StyleClass =
esriSymbologyStyleClass.esriStyleClassBackgrounds;
}
6、在axSymbologyControl1控件的OnItemSelected事件中添加如下代码:
private void axSymbologyControl1_OnItemSelected(object sender, ISymbologyControlEvents_OnItemSelectedEvent e)
{
IStyleGalleryItem pStyleGalleryItem = e.styleGalleryItem as IStyleGalleryItem;
IFrameProperties pFrameProperties =
axPageLayoutControl1.GraphicsContainer.FindFrame(axPageLayoutControl1.ActiveView.FocusMap) as IFrameProperties;
if (pStyleGalleryItem.Item is IBackground)
{
pFrameProperties.Background = pStyleGalleryItem.Item as IBackground;
}
else if (pStyleGalleryItem.Item is IBorder)
{
pFrameProperties.Border = pStyleGalleryItem.Item as IBorder;
}
else if (pStyleGalleryItem.Item is IShadow)
{
pFrameProperties.Shadow = pStyleGalleryItem.Item as IShadow;
}
axPageLayoutControl1.Refresh(esriViewDrawPhase.esriViewBackground, null, null); }
7、在“设置网格”按钮的Click事件中添加如下代码:
private void ButtonGrid_Click(object sender, EventArgs e)
{
IActiveView pActiveView = axPageLayoutControl1.PageLayout as IActiveView;
IMap pMap = pActiveView.FocusMap;
IMeasuredGrid pMeasuredGrid = new MeasuredGridClass();
IMapGrid pMapGrid = pMeasuredGrid as IMapGrid;
pMeasuredGrid.FixedOrigin = true;
pMeasuredGrid.Units = pMap.MapUnits;
pMeasuredGrid.XIntervalSize = 10;
pMeasuredGrid.YIntervalSize = 10;
pMeasuredGrid.XOrigin = -180;
pMeasuredGrid.YOrigin = -90;
IProjectedGrid pProjectedGrid = pMeasuredGrid as IProjectedGrid;
pProjectedGrid.SpatialReference = pMap.SpatialReference;
= "Measured Grid";
IGraphicsContainer pGraphicsContainer = pActiveView as IGraphicsContainer;
IMapFrame pMapFrame = pGraphicsContainer.FindFrame(pMap) as IMapFrame;
IMapGrids pMapGrids = pMapFrame as IMapGrids;
pMapGrids.AddMapGrid(pMapGrid);
pActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null); }
8、程序运行最终界面如下:
思考题:
1、IStyleGalleryItem接口有哪些属性,各属性有何作用?
2、叙述实现“设置网格”功能的编程思路。