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 ESRI.ArcGIS.Carto; using KGIS.Plugin.LayerProperty.Properties; using DevExpress.XtraEditors; using KGIS.Plugin.LayerProperty.Interface; namespace KGIS.Plugin.LayerProperty.View.UC_Controls { public partial class UCPolylineLabelPlacementSet : XtraUserControl, IPropertyPage { private IBasicOverposterLayerProperties4 m_LayerProperties; private bool isPageDirty; public event System.EventHandler EditorChanged; public bool IsPageDirty { get { return this.isPageDirty; } set { this.isPageDirty = value; } } public UCPolylineLabelPlacementSet() { InitializeComponent(); } public void InitUC(object layerProperty) { try { this.m_LayerProperties = (layerProperty as IBasicOverposterLayerProperties4); this.groupControl2.Enabled = true; ILineLabelPosition lineLabelPosition = this.m_LayerProperties.LineLabelPosition; if (lineLabelPosition.Horizontal) { this.rdgOrientationSet.SelectedIndex = 0; this.groupControl2.Enabled = false; } else { if (lineLabelPosition.Parallel) { this.rdgOrientationSet.SelectedIndex = 1; } else { if (lineLabelPosition.ProduceCurvedLabels) { this.rdgOrientationSet.SelectedIndex = 2; } else { if (lineLabelPosition.Perpendicular) { this.rdgOrientationSet.SelectedIndex = 3; } } } } if (lineLabelPosition.Above || lineLabelPosition.Below) { this.cmbOrientationSys.SelectedIndex = 1; this.pictureEdit1.Image = Resources.LineLabelPage; this.chkAbove.Checked = lineLabelPosition.Above; this.chkBelow.Checked = lineLabelPosition.Below; } else { if (lineLabelPosition.Left || lineLabelPosition.Right) { this.cmbOrientationSys.SelectedIndex = 0; this.pictureEdit1.Image = Resources.LineLabelLine; this.chkAbove.Checked = lineLabelPosition.Left; this.chkBelow.Checked = lineLabelPosition.Right; } else { this.cmbOrientationSys.SelectedIndex = 1; this.pictureEdit1.Image = Resources.LineLabelPage; } } this.chkInLine.Checked = lineLabelPosition.OnTop; this.spOffSet.EditValue = lineLabelPosition.Offset; if (lineLabelPosition.AtStart) { this.cmbLocation.SelectedIndex = 1; } else { if (lineLabelPosition.AtEnd) { this.cmbLocation.SelectedIndex = 2; } else { if (lineLabelPosition.InLine) { this.cmbLocation.SelectedIndex = 0; } } } } catch (Exception ex) { //RdbUtil.AddException(ex); } } public bool CanWrite2Prop() { return true; } public void Write2Prop() { this.GetOrientationSet(); this.GetPositionSet(); this.GetLocatoinSet(); this.isPageDirty = false; } public void SetDefaultValue(object value) { } private void cmbOrientationSys_SelectedIndexChanged(object sender, System.EventArgs e) { if (this.cmbOrientationSys.SelectedIndex == 0) { this.pictureEdit1.Image = Resources.LineLabelLine; this.chkAbove.Text = "在线的左边"; this.chkBelow.Text = "在线的右边"; return; } this.pictureEdit1.Image = Resources.LineLabelPage; this.chkAbove.Text = "在线的上边"; this.chkBelow.Text = "在线的下边"; } private void cmbLocation_SelectedIndexChanged(object sender, System.EventArgs e) { if (this.cmbLocation.SelectedIndex == 0) { this.btnPropertiesSet.Enabled = false; return; } this.btnPropertiesSet.Enabled = true; } private void btnProiriSet_Click(object sender, System.EventArgs e) { } private void rdgOrientationSet_SelectedIndexChanged(object sender, System.EventArgs e) { try { this.groupControl2.Enabled = true; this.cmbLocation.Enabled = true; if (this.rdgOrientationSet.SelectedIndex == 0) { this.groupControl2.Enabled = false; } else { if (this.rdgOrientationSet.SelectedIndex == 2) { this.cmbLocation.Enabled = false; } } } catch (Exception ex) { //RdbUtil.AddException(ex); } } private void GetOrientationSet() { try { ILineLabelPosition lineLabelPosition = this.m_LayerProperties.LineLabelPosition; lineLabelPosition.Horizontal = false; lineLabelPosition.Parallel = false; lineLabelPosition.ProduceCurvedLabels = false; lineLabelPosition.Perpendicular = false; if (this.rdgOrientationSet.SelectedIndex == 0) { lineLabelPosition.Horizontal = true; } else { if (this.rdgOrientationSet.SelectedIndex == 1) { lineLabelPosition.Parallel = true; } else { if (this.rdgOrientationSet.SelectedIndex == 2) { lineLabelPosition.ProduceCurvedLabels = true; } else { if (this.rdgOrientationSet.SelectedIndex == 3) { lineLabelPosition.Perpendicular = true; } } } } this.m_LayerProperties.LineLabelPosition = lineLabelPosition; } catch (Exception ex) { //RdbUtil.AddException(ex); } } private void GetPositionSet() { try { ILineLabelPosition lineLabelPosition = this.m_LayerProperties.LineLabelPosition; lineLabelPosition.Above = false; lineLabelPosition.Below = false; lineLabelPosition.OnTop = true; lineLabelPosition.Left = false; lineLabelPosition.Right = false; if (this.cmbOrientationSys.SelectedIndex == 1) { lineLabelPosition.Below = this.chkBelow.Checked; lineLabelPosition.Above = this.chkAbove.Checked; lineLabelPosition.OnTop = this.chkInLine.Checked; } else { lineLabelPosition.Left = this.chkAbove.Checked; lineLabelPosition.Right = this.chkBelow.Checked; lineLabelPosition.OnTop = this.chkInLine.Checked; } lineLabelPosition.Offset = Convert.ToDouble(this.spOffSet.EditValue); this.m_LayerProperties.LineLabelPosition = lineLabelPosition; } catch (Exception ex) { //RdbUtil.AddException(ex); } } private void GetLocatoinSet() { try { ILineLabelPosition lineLabelPosition = this.m_LayerProperties.LineLabelPosition; lineLabelPosition.AtStart = false; lineLabelPosition.AtEnd = false; lineLabelPosition.InLine = false; if (this.cmbLocation.SelectedIndex == 1) { lineLabelPosition.AtStart = true; } else { if (this.cmbLocation.SelectedIndex == 2) { lineLabelPosition.AtEnd = true; } else { lineLabelPosition.InLine = true; } } this.m_LayerProperties.LineLabelPosition = lineLabelPosition; } catch (Exception ex) { //RdbUtil.AddException(ex); } } } }