diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.Designer.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.Designer.cs index afa77cb..df23ef0 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.Designer.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.Designer.cs @@ -156,6 +156,7 @@ namespace JoyD.Windows.CS this.btnLoadTempRegion.Size = new System.Drawing.Size(23, 4); this.btnLoadTempRegion.Text = "加载测温区"; this.btnLoadTempRegion.ToolTipText = "加载测温区"; + this.btnLoadTempRegion.Click += new System.EventHandler(this.BtnLoadTempRegion_Click); // // btnSaveTempRegion // diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs index b9f4430..b91a162 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs @@ -2999,6 +2999,108 @@ namespace JoyD.Windows.CS } } + /// + /// 加载测温区按钮点击事件 + /// + private void BtnLoadTempRegion_Click(object sender, EventArgs e) + { + try + { + // 弹出打开文件对话框 + OpenFileDialog openFileDialog = new OpenFileDialog(); + openFileDialog.Filter = "CSV文件 (*.csv)|*.csv|所有文件 (*.*)|*.*"; + openFileDialog.Title = "选择测温区信息文件"; + openFileDialog.DefaultExt = "csv"; + + // 显示打开文件对话框,如果用户点击了确定按钮 + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + // 移除所有已有的测温区列表 + _drawnRectangles.Clear(); + _selectedRegionIndex = -1; + + // 用透明色清空叠加层图像 + CreateRectangleOverlayImage(); + + // 从CSV文件中读取所有测温区位置大小和颜色信息 + using (StreamReader reader = new StreamReader(openFileDialog.FileName, Encoding.UTF8)) + { + // 跳过标题行 + string headerLine = reader.ReadLine(); + + int index = 0; + string line; + // 逐行读取数据 + while ((line = reader.ReadLine()) != null) + { + try + { + // 分割CSV行数据 + string[] parts = line.Split(','); + + // 解析数据(支持中英文标题的CSV文件) + int x, y, width, height; + Color color; + + if (parts.Length >= 6) + { + // 尝试解析数据(索引可能是从文件中读取的,也可能是我们自己分配的) + int.TryParse(parts[1], out x); + int.TryParse(parts[2], out y); + int.TryParse(parts[3], out width); + int.TryParse(parts[4], out height); + + // 解析颜色 + try + { + color = ColorTranslator.FromHtml(parts[5]); + } + catch + { + // 如果颜色解析失败,使用默认颜色 + color = Color.Red; + } + + // 创建新的测温区并添加到列表 + RegionInfo region = new RegionInfo + { + Index = index, + ImageRectangle = new Rectangle(x, y, width, height), + Color = color + }; + + _drawnRectangles.Add(region); + index++; + } + } + catch (Exception ex) + { + Console.WriteLine("解析行数据失败: " + ex.Message); + // 继续处理下一行 + } + } + } + + // 用读取的颜色填充叠加层图像对应的区域 + DrawRectanglesOnOverlay(); + + // 触发重绘 + picBoxTemp.Invalidate(); + + // 更新按钮可见性 + UpdateButtonsVisibility(0); + + // 加载成功后提示用户 + MessageBox.Show("测温区信息加载成功,共加载 " + _drawnRectangles.Count + " 个测温区", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + catch (Exception ex) + { + Console.WriteLine("加载测温区信息失败: " + ex.Message); + MessageBox.Show("加载测温区信息失败: " + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + /// /// 保存测温区按钮点击事件 ///