diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
index 3a943b2..3553e36 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
@@ -1058,6 +1058,18 @@ namespace JoyD.Windows.CS
btnNewTempDiff.Visible = false;
btnLoadTempDiff.Visible = false;
btnSaveTempDiff.Visible = false;
+ // 显示区域编号设置控件
+ lblRegionNumber.Visible = true;
+ txtRegionNumber.Visible = true;
+ // 更新文本框的值为当前选中区域的编号
+ if (_selectedRegionIndex != -1)
+ {
+ var selectedRegion = _drawnRectangles.FirstOrDefault(r => r.Index == _selectedRegionIndex);
+ if (selectedRegion != null)
+ {
+ txtRegionNumber.Text = selectedRegion.Index.ToString();
+ }
+ }
// 隐藏所有画笔大小按钮
btnBrushSize1.Visible = false;
btnBrushSize3.Visible = false;
@@ -1074,6 +1086,12 @@ namespace JoyD.Windows.CS
{
secondSeparator.Visible = false; // 前面按钮(所有画笔按钮)和后面按钮(新按钮组)都不可见
}
+ // 在初始状态下隐藏区域编号设置控件
+ if (state == 0)
+ {
+ lblRegionNumber.Visible = false;
+ txtRegionNumber.Visible = false;
+ txtRegionNumber.Text = ""; // 清空文本框
break;
case 1: // 选中区域状态
btnDrawRegion.Visible = false; // 隐藏绘制区域按钮
@@ -3020,6 +3038,8 @@ namespace JoyD.Windows.CS
// 移除所有已有的测温区列表
_drawnRectangles.Clear();
_selectedRegionIndex = -1;
+ // 清空区域编号文本框
+ txtRegionNumber.Text = "";
// 用透明色清空叠加层图像
CreateRectangleOverlayImage();
@@ -3112,6 +3132,78 @@ namespace JoyD.Windows.CS
///
/// 保存测温区按钮点击事件
///
+ ///
+ /// 区域编号文本框按键事件处理
+ ///
+ private void txtRegionNumber_KeyDown(object sender, KeyEventArgs e)
+ {
+ // 当用户按下Enter键时更新区域编号
+ if (e.KeyCode == Keys.Enter)
+ {
+ UpdateRegionNumber();
+ }
+ }
+
+ ///
+ /// 区域编号文本框内容变化事件处理
+ ///
+ private void txtRegionNumber_TextChanged(object sender, EventArgs e)
+ {
+ // 只允许输入数字
+ string text = txtRegionNumber.Text;
+ string newText = new string(text.Where(char.IsDigit).ToArray());
+ if (text != newText)
+ {
+ txtRegionNumber.Text = newText;
+ txtRegionNumber.SelectionStart = newText.Length;
+ }
+ }
+
+ ///
+ /// 更新选中区域的编号
+ ///
+ private void UpdateRegionNumber()
+ {
+ if (_selectedRegionIndex != -1 && int.TryParse(txtRegionNumber.Text, out int newNumber))
+ {
+ // 检查新编号是否已经存在
+ if (_drawnRectangles.Any(r => r.Index == newNumber && r.Index != _selectedRegionIndex))
+ {
+ MessageBox.Show("该编号已存在,请选择其他编号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ // 恢复原编号
+ var selectedRegion = _drawnRectangles.FirstOrDefault(r => r.Index == _selectedRegionIndex);
+ if (selectedRegion != null)
+ {
+ txtRegionNumber.Text = selectedRegion.Index.ToString();
+ }
+ return;
+ }
+
+ // 更新区域编号
+ var region = _drawnRectangles.FirstOrDefault(r => r.Index == _selectedRegionIndex);
+ if (region != null)
+ {
+ region.Index = newNumber;
+ _selectedRegionIndex = newNumber; // 更新选中索引
+
+ // 重新绘制
+ CreateRectangleOverlayImage();
+ picBoxTemp.Invalidate();
+ }
+ }
+ else if (!string.IsNullOrEmpty(txtRegionNumber.Text))
+ {
+ // 输入不是有效的数字
+ MessageBox.Show("请输入有效的数字编号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ // 恢复原编号
+ var selectedRegion = _drawnRectangles.FirstOrDefault(r => r.Index == _selectedRegionIndex);
+ if (selectedRegion != null)
+ {
+ txtRegionNumber.Text = selectedRegion.Index.ToString();
+ }
+ }
+ }
+
private void BtnSaveTempRegion_Click(object sender, EventArgs e)
{
try
@@ -3148,7 +3240,8 @@ namespace JoyD.Windows.CS
string colorHex = ColorTranslator.ToHtml(region.Color);
// 写入一行数据,格式:索引,X坐标,Y坐标,宽度,高度,颜色
- writer.WriteLine($"{region.Index},{region.ImageRectangle.X},{region.ImageRectangle.Y},{region.ImageRectangle.Width},{region.ImageRectangle.Height},{colorHex}");
+ // 保存时使用最新的编号
+ writer.WriteLine($"{region.Index},{region.ImageRectangle.X},{region.ImageRectangle.Y},{region.ImageRectangle.Width},{region.ImageRectangle.Height},{colorHex}");
}
}
@@ -3175,6 +3268,8 @@ namespace JoyD.Windows.CS
// 取消选中状态
_selectedRegionIndex = -1;
+ // 清空区域编号文本框
+ txtRegionNumber.Text = "";
// 用透明色清空叠加层图像
CreateRectangleOverlayImage();
@@ -3572,6 +3667,8 @@ namespace JoyD.Windows.CS
{
// 取消选中状态
_selectedRegionIndex = -1;
+ // 清空区域编号文本框
+ txtRegionNumber.Text = "";
// 使用统一的方法更新按钮可见性,设置为就绪状态
UpdateButtonsVisibility(0); // 0表示初始状态/就绪状态
@@ -3596,6 +3693,8 @@ namespace JoyD.Windows.CS
// 选中该区域(点击已选中区域不再取消选中)
_selectedRegionIndex = region.Index;
clickedOnRegion = true;
+ // 更新区域编号文本框
+ txtRegionNumber.Text = region.Index.ToString();
break;
}
}