在工具栏中添加设置选中测温区编号的功能
This commit is contained in:
@@ -1058,6 +1058,18 @@ namespace JoyD.Windows.CS
|
|||||||
btnNewTempDiff.Visible = false;
|
btnNewTempDiff.Visible = false;
|
||||||
btnLoadTempDiff.Visible = false;
|
btnLoadTempDiff.Visible = false;
|
||||||
btnSaveTempDiff.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;
|
btnBrushSize1.Visible = false;
|
||||||
btnBrushSize3.Visible = false;
|
btnBrushSize3.Visible = false;
|
||||||
@@ -1074,6 +1086,12 @@ namespace JoyD.Windows.CS
|
|||||||
{
|
{
|
||||||
secondSeparator.Visible = false; // 前面按钮(所有画笔按钮)和后面按钮(新按钮组)都不可见
|
secondSeparator.Visible = false; // 前面按钮(所有画笔按钮)和后面按钮(新按钮组)都不可见
|
||||||
}
|
}
|
||||||
|
// 在初始状态下隐藏区域编号设置控件
|
||||||
|
if (state == 0)
|
||||||
|
{
|
||||||
|
lblRegionNumber.Visible = false;
|
||||||
|
txtRegionNumber.Visible = false;
|
||||||
|
txtRegionNumber.Text = ""; // 清空文本框
|
||||||
break;
|
break;
|
||||||
case 1: // 选中区域状态
|
case 1: // 选中区域状态
|
||||||
btnDrawRegion.Visible = false; // 隐藏绘制区域按钮
|
btnDrawRegion.Visible = false; // 隐藏绘制区域按钮
|
||||||
@@ -3020,6 +3038,8 @@ namespace JoyD.Windows.CS
|
|||||||
// 移除所有已有的测温区列表
|
// 移除所有已有的测温区列表
|
||||||
_drawnRectangles.Clear();
|
_drawnRectangles.Clear();
|
||||||
_selectedRegionIndex = -1;
|
_selectedRegionIndex = -1;
|
||||||
|
// 清空区域编号文本框
|
||||||
|
txtRegionNumber.Text = "";
|
||||||
|
|
||||||
// 用透明色清空叠加层图像
|
// 用透明色清空叠加层图像
|
||||||
CreateRectangleOverlayImage();
|
CreateRectangleOverlayImage();
|
||||||
@@ -3112,6 +3132,78 @@ namespace JoyD.Windows.CS
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 保存测温区按钮点击事件
|
/// 保存测温区按钮点击事件
|
||||||
/// </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)
|
private void BtnSaveTempRegion_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -3148,7 +3240,8 @@ namespace JoyD.Windows.CS
|
|||||||
string colorHex = ColorTranslator.ToHtml(region.Color);
|
string colorHex = ColorTranslator.ToHtml(region.Color);
|
||||||
|
|
||||||
// 写入一行数据,格式:索引,X坐标,Y坐标,宽度,高度,颜色
|
// 写入一行数据,格式:索引,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;
|
_selectedRegionIndex = -1;
|
||||||
|
// 清空区域编号文本框
|
||||||
|
txtRegionNumber.Text = "";
|
||||||
|
|
||||||
// 用透明色清空叠加层图像
|
// 用透明色清空叠加层图像
|
||||||
CreateRectangleOverlayImage();
|
CreateRectangleOverlayImage();
|
||||||
@@ -3572,6 +3667,8 @@ namespace JoyD.Windows.CS
|
|||||||
{
|
{
|
||||||
// 取消选中状态
|
// 取消选中状态
|
||||||
_selectedRegionIndex = -1;
|
_selectedRegionIndex = -1;
|
||||||
|
// 清空区域编号文本框
|
||||||
|
txtRegionNumber.Text = "";
|
||||||
|
|
||||||
// 使用统一的方法更新按钮可见性,设置为就绪状态
|
// 使用统一的方法更新按钮可见性,设置为就绪状态
|
||||||
UpdateButtonsVisibility(0); // 0表示初始状态/就绪状态
|
UpdateButtonsVisibility(0); // 0表示初始状态/就绪状态
|
||||||
@@ -3596,6 +3693,8 @@ namespace JoyD.Windows.CS
|
|||||||
// 选中该区域(点击已选中区域不再取消选中)
|
// 选中该区域(点击已选中区域不再取消选中)
|
||||||
_selectedRegionIndex = region.Index;
|
_selectedRegionIndex = region.Index;
|
||||||
clickedOnRegion = true;
|
clickedOnRegion = true;
|
||||||
|
// 更新区域编号文本框
|
||||||
|
txtRegionNumber.Text = region.Index.ToString();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user