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;
// 添加到数据列表