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
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; |
|
} |
|
} |
|
}
|
|
|