Newer
Older
LSPipeline / FrmTextureParamSetting.cs
wxn on 1 Dec 2016 6 KB first
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();
                    }
                }
            }
        }
    }
}