/// <summary> /// 开始演示 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonPlay_Click(object sender, EventArgs e) { if (m_WaterFeature != null) { //水面高度 m_dBaseAlt = Convert.ToDouble(textBoxWaterAlt.Text); //判断不能超过最大最小值 if (m_dBaseAlt > m_pntMaxAlt.Z) { m_dBaseAlt = m_pntMaxAlt.Z; } if (m_dBaseAlt < m_pntMinAlt.Z) { m_dBaseAlt = m_pntMinAlt.Z; } textBoxWaterAlt.Text = m_dBaseAlt.ToString("f2"); trackBarAlt.Value = Math.Min((int)m_dBaseAlt, trackBarAlt.Maximum); GSOGeoWater geoWater = (GSOGeoWater)m_WaterFeature.Geometry; geoWater.SetAltitude(m_dBaseAlt); int nF = Convert.ToInt32(textBoxFrequency.Text); if (nF <= 0) { nF = 1; } timerPlay.Interval = (int)(1000.0 / nF); timerPlay.Start(); } else { MessageBox.Show("请先进行分析!"); } }
private void CtrlWaterParamPage_Load(object sender, EventArgs e) { GSOGeoWater geoWater = m_Geometry as GSOGeoWater; if (geoWater != null) { textBoxWaveSpeedX.Text = geoWater.WaveSpeedX.ToString(); textBoxWaveSpeedY.Text = geoWater.WaveSpeedY.ToString(); textBoxWaveWidth.Text = geoWater.WaveWidth.ToString(); pictureBoxWaterColor.BackColor = geoWater.WaterColor; pictureBoxReflectColor.BackColor = Color.FromArgb(255, geoWater.ReflectColor); upDownReflectOpaque.Value = geoWater.ReflectColor.A; if (geoWater.LightType < 0 || geoWater.LightType > 3) { comboBoxLightType.SelectedIndex = 0; } else { comboBoxLightType.SelectedIndex = geoWater.LightType; } textBoxNormalImage.Text = geoWater.WaveNormalImage; textBoxDuDvImage.Text = geoWater.WaveDuDvImage; cboxReflectSky.Checked = geoWater.ReflectSky; checkBoxWaveLOD.Checked = geoWater.UseWaveLOD; } }
/// <summary> /// 创建个计时器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timerPlay_Tick(object sender, EventArgs e) { if (m_WaterFeature != null) { if (m_dBaseAlt > m_pntMaxAlt.Z) { if (checkBoxLoopPlay.Checked) { m_dBaseAlt = m_pntMinAlt.Z; } else { timerPlay.Stop(); } } //每秒升高 m_dBaseAlt += (double)numericUpDownAddPerTime.Value; globeControl1.Globe.Analysis3D.FetchNoSourceFloodAnalyseResult(m_dBaseAlt, out m_dFloodArea, out m_dTotalArea, out m_pntMaxAlt, out m_pntMinAlt); SetText(); textBoxWaterAlt.Text = m_dBaseAlt.ToString("f2"); trackBarAlt.Value = Math.Min((int)m_dBaseAlt, trackBarAlt.Maximum); GSOGeoWater geoWater = (GSOGeoWater)m_WaterFeature.Geometry; geoWater.SetAltitude(m_dBaseAlt); } }
private void ShowWater() { if (m_WaterFeature == null || m_WaterFeature.IsDeleted) { m_dBaseAlt = m_pntMinAlt.Z; GSOGeoWater geoWater = m_polygon3D.ConvertToGeoWater(); GSOExtrudeStyle extrudeStyle = new GSOExtrudeStyle(); if (checkBoxExtrude.Checked) { extrudeStyle.ExtrudeType = EnumExtrudeType.ExtrudeToValue; } else { extrudeStyle.ExtrudeType = EnumExtrudeType.ExtrudeNone; } extrudeStyle.ExtrudeValue = m_pntMinAlt.Z; extrudeStyle.TailPartVisible = false; GSOSimplePolygonStyle3D polygonStyle = new GSOSimplePolygonStyle3D(); polygonStyle.FillColor = Color.FromArgb(200, 0, 0, 255); extrudeStyle.BodyStyle = polygonStyle; geoWater.ExtrudeStyle = extrudeStyle; geoWater.AltitudeMode = EnumAltitudeMode.Absolute; geoWater.SetAltitude(m_dBaseAlt); geoWater.ReflectSky = false; geoWater.WaveWidth = 0.1; geoWater.Play(); m_WaterFeature = new GSOFeature(); m_WaterFeature.Geometry = geoWater; m_globe.MemoryLayer.AddFeature(m_WaterFeature); m_globe.Refresh(); trackBarAlt.Maximum = (int)m_pntMaxAlt.Z; trackBarAlt.Minimum = (int)m_pntMinAlt.Z; trackBarAlt.Value = trackBarAlt.Minimum; textBoxWaterAlt.Text = m_dBaseAlt.ToString("f2"); } else { GSOGeoWater geoWater = (GSOGeoWater)m_WaterFeature.Geometry; geoWater.SetAltitude(m_dBaseAlt); m_globe.Refresh(); trackBarAlt.Maximum = (int)m_pntMaxAlt.Z; trackBarAlt.Minimum = (int)m_pntMinAlt.Z; } }
private void checkBoxWaveLOD_CheckedChanged(object sender, EventArgs e) { GSOGeoWater geoWater = m_Geometry as GSOGeoWater; if (geoWater != null) { geoWater.UseWaveLOD = checkBoxWaveLOD.Checked; if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } }
private void cboxReflectSky_CheckedChanged(object sender, EventArgs e) { GSOGeoWater geoWater = m_Geometry as GSOGeoWater; if (geoWater != null) { geoWater.ReflectSky = cboxReflectSky.Checked; if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } }
private void duDvImageImageChanged() { GSOGeoWater geoWater = m_Geometry as GSOGeoWater; if (geoWater != null) { geoWater.WaveDuDvImage = textBoxDuDvImage.Text; if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } }
private void comboBoxLightType_SelectedIndexChanged(object sender, EventArgs e) { GSOGeoWater geoWater = m_Geometry as GSOGeoWater; if (geoWater != null) { geoWater.LightType = comboBoxLightType.SelectedIndex; if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } }
/// <summary> /// 是否显示立面 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void checkBoxExtrude_CheckedChanged(object sender, EventArgs e) { if (m_WaterFeature != null) { GSOGeoWater geoWater = (GSOGeoWater)m_WaterFeature.Geometry; if (checkBoxExtrude.Checked) { geoWater.ExtrudeStyle.ExtrudeType = EnumExtrudeType.ExtrudeToValue; } else { geoWater.ExtrudeStyle.ExtrudeType = EnumExtrudeType.ExtrudeNone; } } }
//水面 private void btn_Water_Click(object sender, EventArgs e) { GSOGeoWater water = new GSOGeoWater(); GSOPoint3ds polygonPnts = new GSOPoint3ds(); // 创建水面的节点 polygonPnts.Add(new GSOPoint3d(120.47, 31.3, 0)); polygonPnts.Add(new GSOPoint3d(120.48, 31.3, 0)); polygonPnts.Add(new GSOPoint3d(120.48, 31.25, 0)); polygonPnts.Add(new GSOPoint3d(120.47, 31.2, 0)); water.AddPart(polygonPnts); water.Play(); //播放水面动态效果 water.WaveSpeedX = 0; //X方向水流速度 water.WaveSpeedY = 0.1; //Y方向水流速度 AddNewGeoToLayer(water, "水面"); }
/// <summary> /// 重播按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonReplay_Click(object sender, EventArgs e) { if (m_WaterFeature != null) { m_dBaseAlt = m_pntMinAlt.Z; //设置为最低点 textBoxWaterAlt.Text = m_dBaseAlt.ToString("f2"); trackBarAlt.Value = trackBarAlt.Minimum; GSOGeoWater geoWater = (GSOGeoWater)m_WaterFeature.Geometry; geoWater.SetAltitude(m_dBaseAlt); int nF = Convert.ToInt32(textBoxFrequency.Text); if (nF <= 0) { nF = 1; } timerPlay.Interval = (int)(1000.0 / nF); timerPlay.Start(); } }
private void FrmPolygonToWater_Load(object sender, EventArgs e) { mFeatures = mLayer.GetAllFeatures(); mFeaturesOld = new GSOFeatures(); bool hasGeoWater = false; for (int i = 0; i < mFeatures.Length; i++) { if (mFeatures[i] != null) { mFeaturesOld.Add(mFeatures[i].Clone()); if (!hasGeoWater) { if (mFeatures[i].Geometry != null && mFeatures[i].Geometry.Type == EnumGeometryType.GeoWater) { GSOGeoWater geoWater = (GSOGeoWater)mFeatures[i].Geometry; // 水一般都是绝对高度模式 //geoWater.Altitude = EnumAltitudeMode.Absolute; textBoxWaveSpeedX.Text = geoWater.WaveSpeedX.ToString(); textBoxWaveSpeedY.Text = geoWater.WaveSpeedY.ToString(); textBoxWaveWidth.Text = geoWater.WaveWidth.ToString(); pictureBoxWaterColor.BackColor = geoWater.WaterColor; pictureBoxReflectColor.BackColor = geoWater.ReflectColor; textBoxNormalImage.Text = geoWater.WaveNormalImage; textBoxDuDvImage.Text = geoWater.WaveDuDvImage; checkboxReflectSky.Checked = geoWater.ReflectSky; checkBoxWaveLOD.Checked = geoWater.UseWaveLOD; hasGeoWater = true; } } } } if (!hasGeoWater) { textBoxWaveSpeedX.Text = "" + 0; textBoxWaveSpeedY.Text = "" + 0.00999999977648258; textBoxWaveWidth.Text = "" + 1; comboBoxLightType.SelectedIndex = 0; } }
private void textBoxWaveWidth_TextChanged(object sender, EventArgs e) { GSOGeoWater geoWater = m_Geometry as GSOGeoWater; if (geoWater != null) { try { geoWater.WaveWidth = Convert.ToDouble(textBoxWaveWidth.Text); if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } catch (System.Exception exp) { Log.PublishTxt(exp); } } }
private void reflectColorChanged() { GSOGeoWater geoWater = m_Geometry as GSOGeoWater; if (geoWater != null) { try { geoWater.ReflectColor = Color.FromArgb(Convert.ToByte(upDownReflectOpaque.Value), pictureBoxReflectColor.BackColor); if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } catch (System.Exception exp) { Log.PublishTxt(exp); } } }
private void waterColorChanged() { GSOGeoWater geoWater = m_Geometry as GSOGeoWater; if (geoWater != null) { try { geoWater.WaterColor = pictureBoxWaterColor.BackColor; if (m_GlobeControl != null) { m_GlobeControl.Refresh(); } } catch (System.Exception exp) { Log.PublishTxt(exp); } } }
private bool apply() { double waveSpeedX = 0; if (!double.TryParse(textBoxWaveSpeedX.Text.Trim(), out waveSpeedX)) { MessageBox.Show("水波横向速度不符合要求"); return(false); } double waveSpeedY = 0; if (!double.TryParse(textBoxWaveSpeedY.Text.Trim(), out waveSpeedY)) { MessageBox.Show("水波纵向速度不符合要求"); return(false); } double waveWidth = 0; if (!double.TryParse(textBoxWaveWidth.Text.Trim(), out waveWidth)) { MessageBox.Show("水波宽度不符合要求"); return(false); } Color waterColor = pictureBoxWaterColor.BackColor; Color reflectorColor = Color.FromArgb(Convert.ToByte(upDownReflectOpaque.Value), pictureBoxReflectColor.BackColor); int intLightType = comboBoxLightType.SelectedIndex; string waveNormalImagePath = textBoxNormalImage.Text; string waveDuDvImagePath = textBoxDuDvImage.Text; GSOFeatures featuresAdded = new GSOFeatures(); GSOFeatures featuresNomal = new GSOFeatures(); for (int i = mFeatures.Length - 1; i >= 0; i--) { GSOFeature feature = mFeatures[i]; if (feature != null && feature.Geometry != null) { if (feature.Geometry.Type == EnumGeometryType.GeoPolygon3D) { GSOGeoPolygon3D geoPolygon3d = (GSOGeoPolygon3D)feature.Geometry; GSOGeoWater geoWater = geoPolygon3d.ConvertToGeoWater(); // 水一般都是绝对高度模式 //geoWater.Altitude = EnumAltitudeMode.Absolute; geoWater.WaveSpeedX = waveSpeedX; geoWater.WaveSpeedY = waveSpeedY; geoWater.WaveWidth = waveWidth; geoWater.WaterColor = waterColor; geoWater.ReflectColor = reflectorColor; geoWater.WaveNormalImage = waveNormalImagePath; geoWater.WaveDuDvImage = waveDuDvImagePath; geoWater.ReflectSky = checkboxReflectSky.Checked; geoWater.UseWaveLOD = checkBoxWaveLOD.Checked; GSOFeature newFeature = feature.Clone(); geoWater.Play(); newFeature.Geometry = geoWater; featuresAdded.Add(newFeature); } else if (feature.Geometry.Type == EnumGeometryType.GeoWater) { GSOGeoWater geoWater = (GSOGeoWater)feature.Geometry; // 水一般都是绝对高度模式 //geoWater.Altitude = EnumAltitudeMode.Absolute; geoWater.WaveSpeedX = waveSpeedX; geoWater.WaveSpeedY = waveSpeedY; geoWater.WaveWidth = waveWidth; geoWater.WaterColor = waterColor; geoWater.ReflectColor = reflectorColor; geoWater.WaveNormalImage = waveNormalImagePath; geoWater.WaveDuDvImage = waveDuDvImagePath; geoWater.ReflectSky = checkboxReflectSky.Checked; geoWater.UseWaveLOD = checkBoxWaveLOD.Checked; GSOFeature newFeature = feature.Clone(); geoWater.Play(); newFeature.Geometry = geoWater; featuresAdded.Add(newFeature); } else { featuresNomal.Add(feature); } } } mLayer.RemoveAllFeature(); mLayer.AddFeatures(featuresAdded); mLayer.AddFeatures(featuresNomal); mGlobeControl.Refresh(); return(true); }