年度变更建库软件5.0版本
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.

199 lines
6.8 KiB

6 months ago
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using KGIS.Plugin.LayerProperty.Interface;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using KGIS.Plugin.LayerProperty.Utils;
namespace KGIS.Plugin.LayerProperty.View.UC_Controls
{
public partial class UCSimpleRender : XtraUserControl, IUCPropertyPageEx, IPropertyPage
{
private esriGeometryType GeometryType;
private ISimpleRenderer m_SimpleRenderer;
private IStyleGalleryClass m_SymbologyStyleClass;
private ISymbol m_Symbol;
private ILayer m_Layer;
private bool isDirty;
public event System.EventHandler EditorChanged;
public bool IsPageDirty
{
get
{
return this.isDirty;
}
set
{
this.isDirty = value;
}
}
public int Priority
{
get
{
throw new Exception("The method or operation is not implemented.");
}
set
{
throw new Exception("The method or operation is not implemented.");
}
}
public string Title
{
get
{
throw new Exception("The method or operation is not implemented.");
}
set
{
throw new Exception("The method or operation is not implemented.");
}
}
public UCSimpleRender()
{
InitializeComponent();
}
public void InitUC(object layerProperty)
{
try
{
this.m_Layer = (layerProperty as ILayer);
IFeatureLayer2 featureLayer = layerProperty as IFeatureLayer2;
if (featureLayer != null)
{
this.GeometryType = featureLayer.ShapeType;
switch (this.GeometryType)
{
case esriGeometryType.esriGeometryPoint:
this.m_SymbologyStyleClass = new MarkerSymbolStyleGalleryClassClass();
break;
case esriGeometryType.esriGeometryPolyline:
this.m_SymbologyStyleClass = new LineSymbolStyleGalleryClassClass();
break;
case esriGeometryType.esriGeometryPolygon:
this.m_SymbologyStyleClass = new FillSymbolStyleGalleryClassClass();
break;
}
ISimpleRenderer simpleRenderer = (featureLayer as IGeoFeatureLayer).Renderer as ISimpleRenderer;
if (simpleRenderer != null)
{
this.m_Symbol = simpleRenderer.Symbol;
}
else
{
this.m_Symbol = RenderUtil.GetDefaultSymbol(this.GeometryType);
}
this.picSymbolSelecte.Image = RenderUtil.GetSymbolBitMap(this.picSymbolSelecte.Width - 1, this.picSymbolSelecte.Height - 1, this.m_SymbologyStyleClass, this.m_Symbol);
}
}
catch (Exception ex)
{
//RdbUtil.AddException(ex);
}
}
public void Write2Prop()
{
try
{
IGeoFeatureLayer geoFeatureLayer = this.m_Layer as IGeoFeatureLayer;
if (geoFeatureLayer != null)
{
geoFeatureLayer.Renderer = (this.m_SimpleRenderer as IFeatureRenderer);
this.isDirty = false;
}
}
catch (Exception ex)
{
//RdbUtil.AddException(ex);
}
}
public bool CanWrite2Prop()
{
try
{
if (this.m_Symbol != null)
{
this.m_SimpleRenderer = new SimpleRendererClass();
this.m_SimpleRenderer.Description = "";
this.m_SimpleRenderer.Symbol = this.m_Symbol;
}
bool result;
if (this.m_SimpleRenderer == null)
{
result = false;
return result;
}
result = this.isDirty;
return result;
}
catch (Exception ex)
{
//RdbUtil.AddException(ex);
}
return false;
}
public void SetDefaultValue(object value)
{
this.m_SimpleRenderer = (value as ISimpleRenderer);
if (this.m_SimpleRenderer != null)
{
this.picSymbolSelecte.Image = RenderUtil.GetSymbolBitMap(this.picSymbolSelecte.Width - 1, this.picSymbolSelecte.Height - 1, this.m_SymbologyStyleClass, this.m_SimpleRenderer.Symbol);
this.m_Symbol = this.m_SimpleRenderer.Symbol;
}
}
public int Activate()
{
throw new Exception("The method or operation is not implemented.");
}
public void Deactivate()
{
throw new Exception("The method or operation is not implemented.");
}
public void Cancel()
{
throw new Exception("The method or operation is not implemented.");
}
private void picSymbolSelecte_Click(object sender, System.EventArgs e)
{
try
{
this.Cursor = Cursors.WaitCursor;
IClone clone = this.m_Symbol as IClone;
ISymbol symbol = clone.Clone() as ISymbol;
ISymbol symbol2 = RenderUtil.OpenStyleSelector(this.GeometryType, symbol) as ISymbol;
if (symbol2 == null)
{
this.Cursor = Cursors.Default;
return;
}
this.m_Symbol = symbol2;
this.picSymbolSelecte.Image = RenderUtil.GetSymbolBitMap(this.picSymbolSelecte.Width - 1, this.picSymbolSelecte.Height - 1, this.m_SymbologyStyleClass, this.m_Symbol);
this.InvokeEditValueChanged(sender, e);
}
catch (Exception ex)
{
//RdbUtil.AddException(ex);
}
this.Cursor = Cursors.Default;
}
private void InvokeEditValueChanged(object sender, System.EventArgs e)
{
if (this.EditorChanged != null)
{
this.EditorChanged(sender, e);
}
this.isDirty = true;
}
}
}