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.
469 lines
16 KiB
469 lines
16 KiB
using System; |
|
using System.Collections.Generic; |
|
using System.ComponentModel; |
|
using System.Drawing; |
|
using System.Windows.Forms; |
|
using DevExpress.XtraEditors; |
|
using DevExpress.XtraEditors.Controls; |
|
using DevExpress.XtraTreeList; |
|
using DevExpress.XtraTreeList.Columns; |
|
using DevExpress.XtraTreeList.Nodes; |
|
using ESRI.ArcGIS.Carto; |
|
using KGIS.Plugin.LayerProperty.Interface; |
|
|
|
namespace KGIS.Plugin.LayerProperty.View.UC_Controls |
|
{ |
|
internal class UCRasterRenderProperty : XtraUserControl, IUCPropertyPageEx, IPropertyPage |
|
{ |
|
private List<IPropertyPage> ucList; |
|
private IPropertyPage ucRasterRGBRenderer; |
|
private IPropertyPage UCRasterStretchRenderer; |
|
private IRasterLayer m_RasterLayer; |
|
private ILayer m_LayerProperty; |
|
private IPropertyPage m_CurrentProperty; |
|
private bool isDirty; |
|
private IContainer components; |
|
private PanelControl panelleft; |
|
private TextEdit lblRenderDesc; |
|
private SimpleButton btnImportFormLayer; |
|
private PictureEdit picRenderType; |
|
private TreeList tlstRendererType; |
|
private TreeListColumn colName; |
|
private TreeListColumn colType; |
|
private Panel pnRenderPage; |
|
public event System.EventHandler EditorChanged; |
|
public bool IsPageDirty |
|
{ |
|
get |
|
{ |
|
return this.isDirty; |
|
} |
|
set |
|
{ |
|
this.isDirty = value; |
|
} |
|
} |
|
public int Priority |
|
{ |
|
get |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
set |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
} |
|
public string Title |
|
{ |
|
get |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
set |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
} |
|
public UCRasterRenderProperty() |
|
{ |
|
this.InitializeComponent(); |
|
this.ucList = new List<IPropertyPage>(); |
|
} |
|
|
|
public void InitUC(object layerProperty) |
|
{ |
|
this.m_LayerProperty = (layerProperty as ILayer); |
|
this.m_RasterLayer = (layerProperty as IRasterLayer); |
|
if (this.m_RasterLayer == null) |
|
{ |
|
return; |
|
} |
|
this.InitRenderTree(); |
|
this.ucRasterRGBRenderer = null; |
|
this.ucList = new List<IPropertyPage>(); |
|
IRasterRenderer renderer = this.m_RasterLayer.Renderer; |
|
enumRasterRendererType rasterRendererType = this.GetRasterRendererType(renderer); |
|
switch (rasterRendererType) |
|
{ |
|
case enumRasterRendererType.RasterRGBRenderer: |
|
if (this.ucRasterRGBRenderer == null) |
|
{ |
|
this.pnRenderPage.Controls.Clear(); |
|
this.AddRasterRGBRendererUC(); |
|
} |
|
break; |
|
case enumRasterRendererType.RasterStretchColorRampRenderer: |
|
if (this.UCRasterStretchRenderer == null) |
|
{ |
|
this.pnRenderPage.Controls.Clear(); |
|
this.AddRasterStretchRendererUC(); |
|
} |
|
break; |
|
} |
|
this.SelectNode(rasterRendererType); |
|
this.CurrentRenderChanged(); |
|
} |
|
private void AddUc(IPropertyPage uc) |
|
{ |
|
if (!this.ucList.Contains(uc)) |
|
{ |
|
this.ucList.Add(uc); |
|
} |
|
} |
|
public bool CanWrite2Prop() |
|
{ |
|
return this.m_CurrentProperty.CanWrite2Prop(); |
|
} |
|
public void Write2Prop() |
|
{ |
|
if (this.m_CurrentProperty != null) |
|
{ |
|
this.m_CurrentProperty.Write2Prop(); |
|
this.isDirty = false; |
|
} |
|
} |
|
public void SetDefaultValue(object value) |
|
{ |
|
} |
|
private void InitRenderTree() |
|
{ |
|
try |
|
{ |
|
this.tlstRendererType.Nodes.Clear(); |
|
TreeListNode treeListNode = this.tlstRendererType.AppendNode(new object[] |
|
{ |
|
"拉伸", |
|
enumRasterRendererType.RasterStretchColorRampRenderer |
|
}, null); |
|
treeListNode.Tag = enumRasterRendererType.RasterStretchColorRampRenderer; |
|
if (this.m_RasterLayer.BandCount == 3) |
|
{ |
|
TreeListNode treeListNode2 = this.tlstRendererType.AppendNode(new object[] |
|
{ |
|
"RGB综合", |
|
enumRasterRendererType.RasterRGBRenderer |
|
}, null); |
|
treeListNode2.Tag = enumRasterRendererType.RasterRGBRenderer; |
|
} |
|
} |
|
catch |
|
{ |
|
} |
|
} |
|
private enumRasterRendererType GetRasterRendererType(IRasterRenderer featureRenderer) |
|
{ |
|
enumRasterRendererType result = enumRasterRendererType.RasterRGBRenderer; |
|
try |
|
{ |
|
if (featureRenderer is IRasterClassifyColorRampRenderer) |
|
{ |
|
result = enumRasterRendererType.RasterClassifyColorRampRenderer; |
|
} |
|
else |
|
{ |
|
if (featureRenderer is IRasterDiscreteColorRenderer) |
|
{ |
|
result = enumRasterRendererType.RasterDiscreteColorRenderer; |
|
} |
|
else |
|
{ |
|
if (featureRenderer is IRasterRGBRenderer) |
|
{ |
|
result = enumRasterRendererType.RasterRGBRenderer; |
|
} |
|
else |
|
{ |
|
if (featureRenderer is IRasterStretchColorRampRenderer) |
|
{ |
|
result = enumRasterRendererType.RasterStretchColorRampRenderer; |
|
} |
|
else |
|
{ |
|
if (featureRenderer is IRasterUniqueValueRenderer) |
|
{ |
|
result = enumRasterRendererType.RasterUniqueValueRenderer; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
return result; |
|
} |
|
private void SelectNode(enumRasterRendererType type) |
|
{ |
|
try |
|
{ |
|
TreeListNode focusedNode = this.tlstRendererType.FindNodeByFieldValue(this.colType.FieldName, type); |
|
this.tlstRendererType.FocusedNode = null; |
|
this.tlstRendererType.FocusedNode = focusedNode; |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
|
|
private void ucRender_EditorChanged(object sender, System.EventArgs e) |
|
{ |
|
this.InvokeEditValueChanged(sender, e); |
|
} |
|
|
|
private void InvokeEditValueChanged(object sender, System.EventArgs e) |
|
{ |
|
if (this.EditorChanged != null) |
|
{ |
|
this.EditorChanged(sender, e); |
|
} |
|
this.m_CurrentProperty.IsPageDirty = true; |
|
this.isDirty = true; |
|
} |
|
private void CurrentRenderChanged() |
|
{ |
|
try |
|
{ |
|
if (this.m_CurrentProperty == this.ucRasterRGBRenderer) |
|
{ |
|
this.lblRenderDesc.Text = "通过三原色合成进行图像显示"; |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
private void tlstRendererType_FocusedNodeChanged(object sender, FocusedNodeChangedEventArgs e) |
|
{ |
|
try |
|
{ |
|
if (e.Node != null) |
|
{ |
|
TreeListNode node = e.Node; |
|
if (node.Tag == null) |
|
return; |
|
switch ((enumRasterRendererType)node.Tag) |
|
{ |
|
case enumRasterRendererType.RasterRGBRenderer: |
|
if (this.m_CurrentProperty != this.ucRasterRGBRenderer) |
|
{ |
|
this.pnRenderPage.Controls.Clear(); |
|
this.AddRasterRGBRendererUC(); |
|
} |
|
break; |
|
case enumRasterRendererType.RasterStretchColorRampRenderer: |
|
if (this.m_CurrentProperty != this.UCRasterStretchRenderer) |
|
{ |
|
this.pnRenderPage.Controls.Clear(); |
|
this.AddRasterStretchRendererUC(); |
|
} |
|
break; |
|
} |
|
|
|
this.InvokeEditValueChanged(null, null); |
|
this.CurrentRenderChanged(); |
|
} |
|
} |
|
catch |
|
{ |
|
} |
|
} |
|
private void AddRasterRGBRendererUC() |
|
{ |
|
if (this.ucRasterRGBRenderer == null) |
|
{ |
|
this.ucRasterRGBRenderer = new UCRasterRGBRenderer(); |
|
this.ucRasterRGBRenderer.Dock = DockStyle.Fill; |
|
this.ucRasterRGBRenderer.EditorChanged += new System.EventHandler(this.ucRender_EditorChanged); |
|
this.AddUc(this.ucRasterRGBRenderer); |
|
} |
|
this.m_CurrentProperty = this.ucRasterRGBRenderer; |
|
this.ucRasterRGBRenderer.InitUC(this.m_LayerProperty); |
|
this.pnRenderPage.Controls.Add(this.ucRasterRGBRenderer as System.Windows.Forms.Control); |
|
} |
|
private void AddRasterStretchRendererUC() |
|
{ |
|
if (this.UCRasterStretchRenderer == null) |
|
{ |
|
this.UCRasterStretchRenderer = new UCRasterStretchRenderer(); |
|
this.UCRasterStretchRenderer.Dock = DockStyle.Fill; |
|
this.UCRasterStretchRenderer.EditorChanged += new System.EventHandler(this.ucRender_EditorChanged); |
|
this.AddUc(this.UCRasterStretchRenderer); |
|
} |
|
this.m_CurrentProperty = this.UCRasterStretchRenderer; |
|
this.UCRasterStretchRenderer.InitUC(this.m_LayerProperty); |
|
this.pnRenderPage.Controls.Add(this.UCRasterStretchRenderer as System.Windows.Forms.Control); |
|
} |
|
public int Activate() |
|
{ |
|
return 0; |
|
} |
|
public void Deactivate() |
|
{ |
|
|
|
} |
|
public void Cancel() |
|
{ |
|
|
|
} |
|
private void btnImportFormLayer_Click(object sender, System.EventArgs e) |
|
{ |
|
FormImportRasterRender formImportRasterRender = new FormImportRasterRender(); |
|
formImportRasterRender.InitForm(this.m_RasterLayer); |
|
DialogResult dialogResult = formImportRasterRender.ShowDialog(); |
|
if (dialogResult == DialogResult.OK) |
|
{ |
|
IRasterRenderer rasterRenderer = formImportRasterRender.RasterRenderer; |
|
this.m_RasterLayer.Renderer = rasterRenderer; |
|
if (this.m_CurrentProperty != null) |
|
{ |
|
this.m_CurrentProperty.SetDefaultValue(rasterRenderer); |
|
} |
|
} |
|
} |
|
protected override void Dispose(bool disposing) |
|
{ |
|
if (disposing && this.components != null) |
|
{ |
|
this.components.Dispose(); |
|
} |
|
base.Dispose(disposing); |
|
} |
|
private void InitializeComponent() |
|
{ |
|
this.panelleft = new DevExpress.XtraEditors.PanelControl(); |
|
this.tlstRendererType = new DevExpress.XtraTreeList.TreeList(); |
|
this.colName = new DevExpress.XtraTreeList.Columns.TreeListColumn(); |
|
this.colType = new DevExpress.XtraTreeList.Columns.TreeListColumn(); |
|
this.picRenderType = new DevExpress.XtraEditors.PictureEdit(); |
|
this.lblRenderDesc = new DevExpress.XtraEditors.TextEdit(); |
|
this.btnImportFormLayer = new DevExpress.XtraEditors.SimpleButton(); |
|
this.pnRenderPage = new System.Windows.Forms.Panel(); |
|
((System.ComponentModel.ISupportInitialize)(this.panelleft)).BeginInit(); |
|
((System.ComponentModel.ISupportInitialize)(this.tlstRendererType)).BeginInit(); |
|
((System.ComponentModel.ISupportInitialize)(this.picRenderType.Properties)).BeginInit(); |
|
((System.ComponentModel.ISupportInitialize)(this.lblRenderDesc.Properties)).BeginInit(); |
|
this.SuspendLayout(); |
|
// |
|
// panelleft |
|
// |
|
this.panelleft.Appearance.BackColor = System.Drawing.Color.Transparent; |
|
this.panelleft.Appearance.Options.UseBackColor = true; |
|
this.panelleft.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; |
|
this.panelleft.Controls.Add(this.tlstRendererType); |
|
this.panelleft.Controls.Add(this.picRenderType); |
|
this.panelleft.Dock = System.Windows.Forms.DockStyle.Left; |
|
this.panelleft.Location = new System.Drawing.Point(0, 0); |
|
this.panelleft.Name = "panelleft"; |
|
this.panelleft.Size = new System.Drawing.Size(157, 425); |
|
this.panelleft.TabIndex = 1; |
|
// |
|
// tlstRendererType |
|
// |
|
this.tlstRendererType.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] { |
|
this.colName, |
|
this.colType}); |
|
this.tlstRendererType.Location = new System.Drawing.Point(6, 7); |
|
this.tlstRendererType.Name = "tlstRendererType"; |
|
this.tlstRendererType.Size = new System.Drawing.Size(148, 299); |
|
this.tlstRendererType.TabIndex = 5; |
|
this.tlstRendererType.FocusedNodeChanged += new DevExpress.XtraTreeList.FocusedNodeChangedEventHandler(this.tlstRendererType_FocusedNodeChanged); |
|
// |
|
// colName |
|
// |
|
this.colName.Caption = "名称"; |
|
this.colName.FieldName = "F_Name"; |
|
this.colName.MinWidth = 46; |
|
this.colName.Name = "colName"; |
|
this.colName.Visible = true; |
|
this.colName.VisibleIndex = 0; |
|
// |
|
// colType |
|
// |
|
this.colType.Caption = "渲染类型"; |
|
this.colType.FieldName = "F_Type"; |
|
this.colType.Name = "colType"; |
|
// |
|
// picRenderType |
|
// |
|
this.picRenderType.Location = new System.Drawing.Point(6, 309); |
|
this.picRenderType.Name = "picRenderType"; |
|
// |
|
// |
|
// |
|
this.picRenderType.Properties.Appearance.BackColor = System.Drawing.Color.Transparent; |
|
this.picRenderType.Properties.Appearance.Options.UseBackColor = true; |
|
this.picRenderType.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; |
|
this.picRenderType.Size = new System.Drawing.Size(145, 108); |
|
this.picRenderType.TabIndex = 4; |
|
// |
|
// lblRenderDesc |
|
// |
|
this.lblRenderDesc.EditValue = "根据字段值到符号库中进行符号匹配"; |
|
this.lblRenderDesc.Location = new System.Drawing.Point(159, 3); |
|
this.lblRenderDesc.Name = "lblRenderDesc"; |
|
// |
|
// |
|
// |
|
this.lblRenderDesc.Properties.ReadOnly = true; |
|
this.lblRenderDesc.Size = new System.Drawing.Size(385, 20); |
|
this.lblRenderDesc.TabIndex = 39; |
|
// |
|
// btnImportFormLayer |
|
// |
|
this.btnImportFormLayer.Location = new System.Drawing.Point(551, 1); |
|
this.btnImportFormLayer.Name = "btnImportFormLayer"; |
|
this.btnImportFormLayer.Size = new System.Drawing.Size(67, 27); |
|
this.btnImportFormLayer.TabIndex = 40; |
|
this.btnImportFormLayer.Text = "导入..."; |
|
this.btnImportFormLayer.Click += new System.EventHandler(this.btnImportFormLayer_Click); |
|
// |
|
// pnRenderPage |
|
// |
|
this.pnRenderPage.AutoScroll = true; |
|
this.pnRenderPage.BackColor = System.Drawing.Color.Transparent; |
|
this.pnRenderPage.Location = new System.Drawing.Point(157, 41); |
|
this.pnRenderPage.Name = "pnRenderPage"; |
|
this.pnRenderPage.Size = new System.Drawing.Size(484, 384); |
|
this.pnRenderPage.TabIndex = 41; |
|
// |
|
// UCRasterRenderProperty |
|
// |
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F); |
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; |
|
this.Controls.Add(this.pnRenderPage); |
|
this.Controls.Add(this.lblRenderDesc); |
|
this.Controls.Add(this.btnImportFormLayer); |
|
this.Controls.Add(this.panelleft); |
|
this.Name = "UCRasterRenderProperty"; |
|
this.Size = new System.Drawing.Size(642, 425); |
|
((System.ComponentModel.ISupportInitialize)(this.panelleft)).EndInit(); |
|
((System.ComponentModel.ISupportInitialize)(this.tlstRendererType)).EndInit(); |
|
((System.ComponentModel.ISupportInitialize)(this.picRenderType.Properties)).EndInit(); |
|
((System.ComponentModel.ISupportInitialize)(this.lblRenderDesc.Properties)).EndInit(); |
|
this.ResumeLayout(false); |
|
|
|
} |
|
void IUCPropertyPageEx.Hide() |
|
{ |
|
base.Hide(); |
|
} |
|
void IUCPropertyPageEx.Show() |
|
{ |
|
base.Show(); |
|
} |
|
} |
|
public enum enumRasterRendererType |
|
{ |
|
RasterClassifyColorRampRenderer, |
|
RasterColormapRenderer, |
|
RasterRGBRenderer, |
|
RasterStretchColorRampRenderer, |
|
RasterUniqueValueRenderer, |
|
RasterDiscreteColorRenderer |
|
} |
|
}
|
|
|