diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs index 6f1cb58..c3d2775 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs @@ -4443,12 +4443,18 @@ namespace JoyD.Windows.CS try { double temperature = Convert.ToDouble(parts[0]); - string colorHex = parts[1].TrimStart('#'); - Color color = Color.FromArgb( - Convert.ToInt32(colorHex.Substring(0, 2), 16), - Convert.ToInt32(colorHex.Substring(2, 2), 16), - Convert.ToInt32(colorHex.Substring(4, 2), 16) - ); + // 兼容两种颜色格式:十六进制颜色代码和颜色名称 + Color color; + try + { + // 首先尝试解析十六进制颜色代码 + color = ColorTranslator.FromHtml(parts[1]); + } + catch + { + // 如果解析失败,尝试解析颜色名称 + color = Color.FromName(parts[1]); + } // 添加到温差图例列表 int rowIndex = dataGridViewTempDiff.Rows.Add(); @@ -4685,8 +4691,18 @@ namespace JoyD.Windows.CS int.TryParse(parts[3], out int width); int.TryParse(parts[4], out int height); - // 解析颜色 - Color color = Color.FromName(parts[5]); + // 兼容两种颜色格式:十六进制颜色代码和颜色名称 + Color color; + try + { + // 首先尝试解析十六进制颜色代码 + color = ColorTranslator.FromHtml(parts[5]); + } + catch + { + // 如果解析失败,尝试解析颜色名称 + color = Color.FromName(parts[5]); + } // 创建区域信息 regions.Add(new RegionInfo @@ -4799,8 +4815,8 @@ namespace JoyD.Windows.CS reader.ReadLine(); // 跳过表头行 continue; } - // 识别温差像素数据部分 - else if (line == "温差像素数据") + // 识别像素温度数据部分 + else if (line == "像素温度数据") { readingLegend = false; readingPixelData = true; @@ -4828,8 +4844,18 @@ namespace JoyD.Windows.CS // 解析温差值和颜色 if (double.TryParse(parts[0].Replace("°C", ""), out double tempValue)) { - // 使用ColorTranslator.FromHtml正确解析十六进制颜色代码 - Color color = ColorTranslator.FromHtml(parts[1]); + // 兼容两种颜色格式:十六进制颜色代码和颜色名称 + Color color; + try + { + // 首先尝试解析十六进制颜色代码 + color = ColorTranslator.FromHtml(parts[1]); + } + catch + { + // 如果解析失败,尝试解析颜色名称 + color = Color.FromName(parts[1]); + } tempToColorMap[tempValue] = color; // 添加到数据列表