diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs index 69b7c70..faac0e2 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs @@ -2546,7 +2546,8 @@ namespace JoyD.Windows.CS.Toprie int y = int.Parse(parts[2]); int width = int.Parse(parts[3]); int height = int.Parse(parts[4]); - Color color = Color.FromName(parts[5]); + // 解析检测区颜色,支持颜色名称和十六进制颜色代码 + Color color = CommonUtils.ParseColor(parts[5]); _detectionZone = new DetectionZone { diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/CommonTypes.cs b/Windows/CS/Framework4.0/Toprie/Toprie/CommonTypes.cs index f0a7922..be38a5c 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/CommonTypes.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/CommonTypes.cs @@ -4,6 +4,46 @@ using System.Drawing; namespace JoyD.Windows.CS { + /// + /// 通用工具类,包含各种通用方法 + /// + public static class CommonUtils + { + /// + /// 通用颜色解析方法,支持颜色名称和十六进制颜色代码 + /// + /// 颜色字符串,可以是颜色名称或十六进制代码 + /// 解析失败时使用的默认颜色 + /// 解析后的Color对象 + public static Color ParseColor(string colorString, Color defaultColor = default(Color)) + { + if (string.IsNullOrWhiteSpace(colorString)) + { + // 如果默认颜色未指定或为空,使用黑色 + return defaultColor == default(Color) ? Color.Black : defaultColor; + } + + try + { + // 首先尝试解析十六进制颜色代码 + return ColorTranslator.FromHtml(colorString); + } + catch + { + try + { + // 如果解析失败,尝试解析颜色名称 + return Color.FromName(colorString); + } + catch + { + // 如果都失败,返回默认颜色 + return defaultColor == default(Color) ? Color.Black : defaultColor; + } + } + } + } + /// /// 检测区配置类,用于存储检测区的信息 /// diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs index 9f3b103..4110812 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs @@ -2774,8 +2774,10 @@ namespace JoyD.Windows.CS Rectangle controlDetectionRect = ImageRectangleToControlRectangle(detectionRect); // 高亮显示检测区 - using (Pen pen = new Pen(_tempDetectionZone.Color, 3)) + using (Pen pen = new Pen(_tempDetectionZone.Color, 2)) { + // 设置为虚线边框,与进入前的虚线样式保持一致,确保可见 + pen.DashStyle = DashStyle.Dash; // 设置绘制质量为无抗锯齿,确保边界清晰 e.Graphics.SmoothingMode = SmoothingMode.None; e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor; @@ -2825,11 +2827,9 @@ namespace JoyD.Windows.CS { // 计算检测区在控件中的坐标和大小 // 创建虚线画笔 - using (Pen pen = new Pen(Color.Black, 2)) + using (Pen pen = new Pen(_detectionZone.Color, 2)) { pen.DashStyle = DashStyle.Dash; - // 绘制检测区虚线矩形 - Rectangle destRect = new Rectangle(0, 0, picBoxTemp.ClientSize.Width, picBoxTemp.ClientSize.Height); // 设置绘制质量为无抗锯齿,确保边界清晰 e.Graphics.SmoothingMode = SmoothingMode.None; e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor; @@ -3660,17 +3660,8 @@ namespace JoyD.Windows.CS int.TryParse(parts[3], out int width); int.TryParse(parts[4], out int height); - // 解析颜色 - Color color; - try - { - color = ColorTranslator.FromHtml(parts[5]); - } - catch - { - // 如果颜色解析失败,使用默认颜色 - color = Color.Red; - } + // 解析颜色,使用通用颜色解析方法,支持颜色名称和十六进制颜色代码 + Color color = CommonUtils.ParseColor(parts[5], Color.Red); // 创建新的测温区并添加到列表 // 从CSV文件第一列获取原始索引值 @@ -4892,16 +4883,8 @@ namespace JoyD.Windows.CS double temperature = Convert.ToDouble(parts[0]); // 兼容两种颜色格式:十六进制颜色代码和颜色名称 Color color; - try - { - // 首先尝试解析十六进制颜色代码 - color = ColorTranslator.FromHtml(parts[1]); - } - catch - { - // 如果解析失败,尝试解析颜色名称 - color = Color.FromName(parts[1]); - } + // 使用通用颜色解析方法,支持颜色名称和十六进制颜色代码 + color = CommonUtils.ParseColor(parts[1]); // 添加到温差图例列表 int rowIndex = dataGridViewTempDiff.Rows.Add(); @@ -5387,16 +5370,8 @@ namespace JoyD.Windows.CS // 兼容两种颜色格式:十六进制颜色代码和颜色名称 Color color; - try - { - // 首先尝试解析十六进制颜色代码 - color = ColorTranslator.FromHtml(parts[5]); - } - catch - { - // 如果解析失败,尝试解析颜色名称 - color = Color.FromName(parts[5]); - } + // 使用通用颜色解析方法,支持颜色名称和十六进制颜色代码 + color = CommonUtils.ParseColor(parts[5]); // 创建区域信息 regions.Add(new RegionInfo @@ -5527,17 +5502,8 @@ namespace JoyD.Windows.CS if (double.TryParse(parts[0].Replace("°C", ""), out double tempValue)) { // 兼容两种颜色格式:十六进制颜色代码和颜色名称 - Color color; - try - { - // 首先尝试解析十六进制颜色代码 - color = ColorTranslator.FromHtml(parts[1]); - } - catch - { - // 如果解析失败,尝试解析颜色名称 - color = Color.FromName(parts[1]); - } + // 使用通用颜色解析方法,支持颜色名称和十六进制颜色代码 + Color color = CommonUtils.ParseColor(parts[1]); tempToColorMap[tempValue] = color; // 添加到数据列表