在符号化制图的时候,我们或许已经有了一个lyr的文件,该文件保留了我们符号化的信息,当我们在其他地方配图的时候可能会使用已有的lyr文件来符号化,那么AE是如何做到的呢?整个代码如下:
///
/// 保存lyr文件
///
///
///
public void SaveToLayerFile(System.String pLayerFilePath, ESRI.ArcGIS.Carto.ILayer pLayer)
{
if (pLayer == null)
{
return;
}
ESRI.ArcGIS.Carto.ILayerFile pLayerFile = new ESRI.ArcGIS.Carto.LayerFileClass();
if (System.IO.Path.GetExtension(pLayerFilePath) != ".lyr")
return;
if (pLayerFile.get_IsPresent(pLayerFilePath))
System.IO.File.Delete(pLayerFilePath);
pLayerFile.New(pLayerFilePath);
pLayerFile.ReplaceContents(pLayer);
pLayerFile.Save();
}
//替换过程
private void button13_Click(object sender, EventArgs e)
{
IFeatureLayer pFtLayer = axMapControl1.get_Layer(0) as IFeatureLayer;
ILayer pLayer = GetFileLayer("c:\\Blocks.lyr");
if (pLayer != null)
{
if (pLayer is IFeatureLayer)
{
IGeoFeatureLayer pGeoLayer = pFtLayer as IGeoFeatureLayer;
pGeoLayer.Renderer = (pLayer as IGeoFeatureLayer).Renderer;
}
}
axMapControl1.Refresh();
}
//获取lyr文件
ILayer GetFileLayer(string pFileName)
{
ILayerFile pLayerFile = new LayerFileClass();
pLayerFile.Open(pFileName);
return pLayerFile.Layer;
}
|