|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
using DevExpress.XtraEditors;
|
|
|
|
|
|
using DevExpress.XtraLayout.Utils;
|
|
|
|
|
|
|
|
|
|
|
|
namespace KepGridEditor
|
|
|
|
|
|
{
|
|
|
|
|
|
public partial class FormSmoothSetting : XtraForm
|
|
|
|
|
|
{
|
|
|
|
|
|
public FormSmoothSetting()
|
|
|
|
|
|
{
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
this.StartPosition = FormStartPosition.CenterParent;
|
|
|
|
|
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
|
|
|
|
|
this.MaximizeBox = false;
|
|
|
|
|
|
this.MinimizeBox = false;
|
|
|
|
|
|
|
|
|
|
|
|
// 绑定算法切换事件
|
|
|
|
|
|
cboAlgorithm.SelectedIndexChanged += CboAlgorithm_SelectedIndexChanged;
|
|
|
|
|
|
|
|
|
|
|
|
// 默认选中第一项 (迭代高斯)
|
|
|
|
|
|
cboAlgorithm.SelectedIndex = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void CboAlgorithm_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
// 0: 迭代高斯, 1: 系数平滑
|
|
|
|
|
|
if (cboAlgorithm.SelectedIndex == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
// 显示高斯容器,隐藏系数容器
|
|
|
|
|
|
gcGaussian.Visible = true;
|
|
|
|
|
|
gcNewAlgo.Visible = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// 显示系数容器,隐藏高斯容器
|
|
|
|
|
|
gcGaussian.Visible = false;
|
|
|
|
|
|
gcNewAlgo.Visible = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 算法索引 (0: Gaussian, 1: Coefficient)
|
|
|
|
|
|
public int SelectedAlgorithmIndex
|
|
|
|
|
|
{
|
|
|
|
|
|
get => cboAlgorithm.SelectedIndex;
|
|
|
|
|
|
set => cboAlgorithm.SelectedIndex = value;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 高斯参数:半径
|
|
|
|
|
|
public double GaussianRadius
|
|
|
|
|
|
{
|
|
|
|
|
|
get => double.TryParse(txtGaussianRadius.Text, out double val) ? val : 0;
|
|
|
|
|
|
set => txtGaussianRadius.Text = value.ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 高斯参数:迭代次数
|
|
|
|
|
|
public int IterationCount
|
|
|
|
|
|
{
|
|
|
|
|
|
get => int.TryParse(txtIterationCount.Text, out int val) ? val : 0;
|
|
|
|
|
|
set => txtIterationCount.Text = value.ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 系数参数:平滑系数
|
|
|
|
|
|
public double SmoothCoefficient
|
|
|
|
|
|
{
|
|
|
|
|
|
get => double.TryParse(txtSmoothCoefficient.Text, out double val) ? val : 0;
|
|
|
|
|
|
set => txtSmoothCoefficient.Text = value.ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 系数参数:平滑次数
|
|
|
|
|
|
public int SmoothTimes
|
|
|
|
|
|
{
|
|
|
|
|
|
get => int.TryParse(txtSmoothTimes.Text, out int val) ? val : 0;
|
|
|
|
|
|
set => txtSmoothTimes.Text = value.ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 通用参数:羽化宽度
|
|
|
|
|
|
public int FeatherWidth
|
|
|
|
|
|
{
|
|
|
|
|
|
get => int.TryParse(txtFeatherWidth.Text, out int val) ? val : 0;
|
|
|
|
|
|
set => txtFeatherWidth.Text = value.ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 平滑区域 (0:无, 1:内, 2:外)
|
|
|
|
|
|
public int SmoothRegionIndex
|
|
|
|
|
|
{
|
|
|
|
|
|
get => rdoSmoothRegion.SelectedIndex;
|
|
|
|
|
|
set => rdoSmoothRegion.SelectedIndex = value;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void btnOK_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
// 校验逻辑
|
|
|
|
|
|
if (SelectedAlgorithmIndex == 0) // 迭代高斯
|
|
|
|
|
|
{
|
|
|
|
|
|
if (GaussianRadius < 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
XtraMessageBox.Show("高斯半径不能小于0", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (IterationCount <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
XtraMessageBox.Show("迭代次数必须大于0", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (SelectedAlgorithmIndex == 1) // 系数平滑
|
|
|
|
|
|
{
|
|
|
|
|
|
if (SmoothCoefficient <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
XtraMessageBox.Show("平滑系数必须大于0", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (SmoothTimes <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
XtraMessageBox.Show("平滑次数必须大于0", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.DialogResult = DialogResult.OK;
|
|
|
|
|
|
this.Close();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void btnCancel_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.DialogResult = DialogResult.Cancel;
|
|
|
|
|
|
this.Close();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|