在工具栏中添加设置选中测温区编号的功能
This commit is contained in:
@@ -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
|
||||
/// <summary>
|
||||
/// 保存测温区按钮点击事件
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// 区域编号文本框按键事件处理
|
||||
/// </summary>
|
||||
private void txtRegionNumber_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
// 当用户按下Enter键时更新区域编号
|
||||
if (e.KeyCode == Keys.Enter)
|
||||
{
|
||||
UpdateRegionNumber();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 区域编号文本框内容变化事件处理
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新选中区域的编号
|
||||
/// </summary>
|
||||
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,6 +3240,7 @@ 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}");
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user