You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
4.3 KiB
114 lines
4.3 KiB
using ESRI.ArcGIS.Carto; |
|
using KGIS.Framework.Utils.Helper; |
|
using KGIS.Plugin.LayerProperty.Utils; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.ComponentModel; |
|
using System.Data; |
|
using System.Drawing; |
|
using System.Linq; |
|
using System.Text; |
|
using System.Threading.Tasks; |
|
using System.Windows.Forms; |
|
|
|
namespace KGIS.Plugin.LayerProperty.View |
|
{ |
|
public partial class FormImportFeatureSymbology : Form |
|
{ |
|
private IFeatureLayer CurrentLayer; |
|
private IFeatureRenderer featureRenderer; |
|
public IFeatureRenderer FeatureRenderer |
|
{ |
|
get |
|
{ |
|
return this.featureRenderer; |
|
} |
|
set |
|
{ |
|
this.featureRenderer = value; |
|
} |
|
} |
|
public FormImportFeatureSymbology() |
|
{ |
|
InitializeComponent(); |
|
} |
|
public void Init(IMap map, IFeatureLayer currentLyr) |
|
{ |
|
this.CurrentLayer = currentLyr; |
|
if (map != null) |
|
{ |
|
for (int i = 0; i < map.LayerCount; i++) |
|
{ |
|
ILayer layer = map.get_Layer(i); |
|
if (currentLyr != null && layer is IFeatureLayer2 && (currentLyr as IFeatureLayer2).ShapeType == (layer as IFeatureLayer2).ShapeType) |
|
{ |
|
ItemInfo<ILayer, string> item = new ItemInfo<ILayer, string>(layer, layer.Name); |
|
this.cmbSelectLayer.Properties.Items.Add(item); |
|
} |
|
} |
|
this.cmbSelectLayer.SelectedIndex = 0; |
|
} |
|
} |
|
private void btnOpenLayer_Click(object sender, System.EventArgs e) |
|
{ |
|
ILayerFile layerFile = RenderUtil.OpenLayerFile(); |
|
if (layerFile != null && layerFile.Layer != null) |
|
{ |
|
if (!(layerFile.Layer is IFeatureLayer)) |
|
{ |
|
MessageHelper.ShowTips("图层类型不一致!"); |
|
return; |
|
} |
|
IFeatureLayer2 featureLayer = layerFile.Layer as IFeatureLayer2; |
|
if (featureLayer.ShapeType != (this.CurrentLayer as IFeatureLayer2).ShapeType) |
|
{ |
|
MessageHelper.ShowTips("要素几何类型不一致!"); |
|
return; |
|
} |
|
IGeoFeatureLayer geoFeatureLayer = layerFile.Layer as IGeoFeatureLayer; |
|
this.featureRenderer = geoFeatureLayer.Renderer; |
|
this.cmbSelectLayer.Text = layerFile.Layer.Name; |
|
} |
|
} |
|
private void btnOK_Click(object sender, System.EventArgs e) |
|
{ |
|
try |
|
{ |
|
if (!(this.featureRenderer is ISimpleRenderer)) |
|
{ |
|
if (this.featureRenderer is IUniqueValueRenderer) |
|
{ |
|
IUniqueValueRenderer uniqueValueRenderer = this.featureRenderer as IUniqueValueRenderer; |
|
FormUniqueRendererFieldMatch formUniqueRendererFieldMatch = new FormUniqueRendererFieldMatch(); |
|
formUniqueRendererFieldMatch.InitForm(this.CurrentLayer, uniqueValueRenderer); |
|
if (formUniqueRendererFieldMatch.ShowDialog(this) == DialogResult.OK) |
|
{ |
|
for (int i = 0; i < uniqueValueRenderer.FieldCount; i++) |
|
{ |
|
uniqueValueRenderer.set_Field(i, formUniqueRendererFieldMatch.ValueFields.GetValue(i).ToString()); |
|
} |
|
} |
|
} |
|
else |
|
{ |
|
if (!(this.featureRenderer is IClassBreaksRenderer) && !(this.featureRenderer is IProportionalSymbolRenderer)) |
|
{ |
|
IChartRenderer arg_96_0 = this.featureRenderer as IChartRenderer; |
|
} |
|
} |
|
} |
|
base.DialogResult = DialogResult.OK; |
|
base.Close(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
private void btnCancel_Click(object sender, System.EventArgs e) |
|
{ |
|
base.DialogResult = DialogResult.Cancel; |
|
base.Close(); |
|
} |
|
} |
|
}
|
|
|