修改检测区功能
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
@@ -4,6 +4,46 @@ using System.Drawing;
|
||||
|
||||
namespace JoyD.Windows.CS
|
||||
{
|
||||
/// <summary>
|
||||
/// 通用工具类,包含各种通用方法
|
||||
/// </summary>
|
||||
public static class CommonUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// 通用颜色解析方法,支持颜色名称和十六进制颜色代码
|
||||
/// </summary>
|
||||
/// <param name="colorString">颜色字符串,可以是颜色名称或十六进制代码</param>
|
||||
/// <param name="defaultColor">解析失败时使用的默认颜色</param>
|
||||
/// <returns>解析后的Color对象</returns>
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检测区配置类,用于存储检测区的信息
|
||||
/// </summary>
|
||||
|
||||
@@ -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;
|
||||
|
||||
// 添加到数据列表
|
||||
|
||||
Reference in New Issue
Block a user