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

168 lines
5.9 KiB

using DevExpress.XtraEditors;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
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 FormPointRatation : XtraForm
{
private IFeatureLayer2 m_orendlyr;
private IFeatureRenderer m_orender;
private IRotationRenderer gRotationRenderer;
public IRotationRenderer RotationRenderer
{
get
{
return this.GetRotationRend(this.m_orendlyr, this.m_orender);
}
set
{
this.gRotationRenderer = value;
}
}
public FormPointRatation()
{
InitializeComponent();
}
public bool Init(IFeatureLayer2 orendlyr, IFeatureRenderer orender)
{
try
{
bool result;
if (orendlyr == null || orender == null)
{
result = false;
return result;
}
this.m_orendlyr = orendlyr;
this.m_orender = orender;
ITable table = (ITable)orendlyr;
IFields fields = table.Fields;
this.cmbFields.Properties.Items.Clear();
this.cmbFields.Properties.Items.Add("<none>");
for (int i = 0; i < fields.FieldCount; i++)
{
IField field = fields.get_Field(i);
string name = field.Name;
if (field.Type == esriFieldType.esriFieldTypeDouble || field.Type == esriFieldType.esriFieldTypeInteger || field.Type == esriFieldType.esriFieldTypeSingle || field.Type == esriFieldType.esriFieldTypeSmallInteger)
{
this.cmbFields.Properties.Items.Add(name);
}
}
IRotationRenderer rotationRenderer = (IRotationRenderer)orender;
this.gRotationRenderer = rotationRenderer;
if (rotationRenderer.RotationField == "<none>" || rotationRenderer.RotationField == "")
{
this.cmbFields.EditValue = "<none>";
}
else
{
this.cmbFields.EditValue = rotationRenderer.RotationField;
}
if (rotationRenderer.RotationType == esriSymbolRotationType.esriRotateSymbolGeographic)
{
this.radbtnGeographic.Checked = true;
this.radbtnArithmetic.Checked = false;
}
else
{
if (rotationRenderer.RotationType == esriSymbolRotationType.esriRotateSymbolArithmetic)
{
this.radbtnArithmetic.Checked = true;
this.radbtnGeographic.Checked = false;
}
}
result = true;
return result;
}
catch (Exception ex)
{
//RdbUtil.AddException(ex);
}
return false;
}
private void btnOk_Click(object sender, System.EventArgs e)
{
try
{
if (this.gRotationRenderer == null)
{
this.gRotationRenderer = new SimpleRendererClass();
}
this.gRotationRenderer.RotationField = this.cmbFields.Text;
if (this.radbtnArithmetic.Checked)
{
this.gRotationRenderer.RotationType = esriSymbolRotationType.esriRotateSymbolArithmetic;
}
else
{
if (this.radbtnGeographic.Checked)
{
this.gRotationRenderer.RotationType = esriSymbolRotationType.esriRotateSymbolGeographic;
}
}
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();
}
private IRotationRenderer GetRotationRend(IFeatureLayer2 orendlyr, IFeatureRenderer orender)
{
IRotationRenderer result;
try
{
if (orendlyr == null || orender == null)
{
result = null;
}
else
{
IRotationRenderer rotationRenderer = (IRotationRenderer)orender;
if (this.cmbFields.Text == "<none>")
{
rotationRenderer.RotationField = "";
}
else
{
rotationRenderer.RotationField = this.cmbFields.Text;
}
if (this.radbtnArithmetic.Checked)
{
rotationRenderer.RotationType = esriSymbolRotationType.esriRotateSymbolArithmetic;
}
else
{
if (this.radbtnGeographic.Checked)
{
rotationRenderer.RotationType = esriSymbolRotationType.esriRotateSymbolGeographic;
}
}
result = rotationRenderer;
}
}
catch (Exception ex)
{
//RdbUtil.AddException(ex);
result = null;
}
return result;
}
}
}