using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using GeoScene.Globe; using GeoScene.Data; namespace WorldGIS { public partial class FrmTextureParamSetting : Form { public GSOGlobeControl m_GlobeControl = null; public GSOTextureParam m_OldTexParam = null; public GSOTextureParam m_TexParam = null; public FrmTextureParamSetting(GSOTextureParam texParam, GSOGlobeControl globeControl) { InitializeComponent(); m_GlobeControl = globeControl; if (texParam != null) { m_OldTexParam = texParam.Clone(); } m_TexParam = texParam; } private void SetControlsByTexParam(GSOTextureParam texParam) { if (texParam != null) { if (texParam.USizeType == EnumTexSizeType.MeterLen) { cboxRepeatU.SelectedIndex = 0; } else { cboxRepeatU.SelectedIndex = 1; } tBoxUVal.Text = texParam.USize.ToString(); if (texParam.VSizeType == EnumTexSizeType.MeterLen) { cboxRepeatV.SelectedIndex = 0; } else { cboxRepeatV.SelectedIndex = 1; } tboxVVal.Text = texParam.VSize.ToString(); tboxUOrg.Text = texParam.StartU.ToString(); tboxVOrg.Text = texParam.StartV.ToString(); tboxRotate.Text = texParam.Rotation.ToString(); tboxTexPath.Text = texParam.TexturePath.ToString(); } } private void buttonOk_Click(object sender, EventArgs e) { this.Close(); } private void FrmTextureParamSetting_Load(object sender, EventArgs e) { SetControlsByTexParam(m_TexParam); } private void buttonCancel_Click(object sender, EventArgs e) { // 如果取消的话,将备份的拷贝回来 if (m_TexParam != null) { m_TexParam.Copy(m_OldTexParam); m_GlobeControl.Refresh(); } this.Close(); } private void cboxRepeatU_SelectedIndexChanged(object sender, EventArgs e) { if (m_TexParam != null) { if (cboxRepeatU.SelectedIndex==0) { m_TexParam.USizeType = EnumTexSizeType.MeterLen; } else if(cboxRepeatU.SelectedIndex==1) { m_TexParam.USizeType = EnumTexSizeType.RepeatCount; } if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } } private void tBoxUVal_TextChanged(object sender, EventArgs e) { if (m_TexParam != null) { float fVal; if (float.TryParse(tBoxUVal.Text, out fVal)) { m_TexParam.USize = fVal; } if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } } private void cboxRepeatV_SelectedIndexChanged(object sender, EventArgs e) { if (m_TexParam != null) { if (cboxRepeatV.SelectedIndex == 0) { m_TexParam.VSizeType = EnumTexSizeType.MeterLen; } else if (cboxRepeatV.SelectedIndex == 1) { m_TexParam.VSizeType = EnumTexSizeType.RepeatCount; } if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } } private void tboxVVal_TextChanged(object sender, EventArgs e) { if (m_TexParam != null) { float fVal; if (float.TryParse(tboxVVal.Text, out fVal)) { m_TexParam.VSize = fVal; } if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } } private void tboxUOrg_TextChanged(object sender, EventArgs e) { if (m_TexParam!=null) { float fVal; if (float.TryParse(tboxUOrg.Text, out fVal)) { m_TexParam.StartU = fVal; } if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } } private void tboxVOrg_TextChanged(object sender, EventArgs e) { if (m_TexParam != null) { float fVal; if (float.TryParse(tboxVOrg.Text, out fVal)) { m_TexParam.StartV = fVal; } if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } } private void tboxRotate_TextChanged(object sender, EventArgs e) { if (m_TexParam != null) { float fVal; if (float.TryParse(tboxRotate.Text, out fVal)) { m_TexParam.Rotation = fVal; } if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } } private void buttonTexPath_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "图片(*.png,*.jpg,*.jpeg,*.bmp,*.gif,*.tga)|*.png;*.jpg;*.jpeg;*.bmp;*.gif;*.tga|(*.*)|*.*"; if (dlg.ShowDialog() == DialogResult.OK) { tboxTexPath.Text = dlg.FileName; if (m_TexParam != null) { m_TexParam.TexturePath = dlg.FileName; m_TexParam.IsMipMapUsed = true; if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } } } } }