当处于自然模式时,不显示温度信息
This commit is contained in:
@@ -2902,128 +2902,131 @@ namespace JoyD.Windows.CS.Toprie
|
||||
// 清除DisplayImage为透明色
|
||||
g.Clear(Color.Transparent);
|
||||
|
||||
// 2. 如果没有温度数据或温度数据的时间3秒之前,返回
|
||||
TemperatureData temperatureData = _deviceManager.LastTemperature;
|
||||
if (temperatureData == null || temperatureData.Timestamp == null)
|
||||
return;
|
||||
|
||||
TimeSpan timeDiff = DateTime.Now - temperatureData.Timestamp;
|
||||
if (timeDiff.TotalSeconds > 3)
|
||||
return;
|
||||
|
||||
// 3. 温度显示菜单下如果未勾选区域温度和全局温度,则不显示任何温度信息
|
||||
if (!_showGlobalTemperature && !_showAreaTemperature)
|
||||
return;
|
||||
|
||||
// 4. 如果勾选了全局温度且未勾选区域温度,则显示全局温度(居中显示),否则显示区域温度(居中显示)
|
||||
bool isGlobalTemperatureMode = _showGlobalTemperature && !_showAreaTemperature;
|
||||
|
||||
// 5. 如果勾选了区域温度,则显示区域框和编号,否则不显示区域框
|
||||
if (_showAreaTemperature)
|
||||
if (_deviceManager.CurrentImageMode == ImageMode.Infrared)
|
||||
{
|
||||
try
|
||||
// 2. 如果没有温度数据或温度数据的时间3秒之前,返回
|
||||
TemperatureData temperatureData = _deviceManager.LastTemperature;
|
||||
if (temperatureData == null || temperatureData.Timestamp == null)
|
||||
return;
|
||||
|
||||
TimeSpan timeDiff = DateTime.Now - temperatureData.Timestamp;
|
||||
if (timeDiff.TotalSeconds > 3)
|
||||
return;
|
||||
|
||||
// 3. 温度显示菜单下如果未勾选区域温度和全局温度,则不显示任何温度信息
|
||||
if (!_showGlobalTemperature && !_showAreaTemperature)
|
||||
return;
|
||||
|
||||
// 4. 如果勾选了全局温度且未勾选区域温度,则显示全局温度(居中显示),否则显示区域温度(居中显示)
|
||||
bool isGlobalTemperatureMode = _showGlobalTemperature && !_showAreaTemperature;
|
||||
|
||||
// 5. 如果勾选了区域温度,则显示区域框和编号,否则不显示区域框
|
||||
if (_showAreaTemperature)
|
||||
{
|
||||
// 使用固定的字体和格式对象绘制区域编号
|
||||
using (Font font = new Font("微软雅黑", 10, FontStyle.Bold))
|
||||
try
|
||||
{
|
||||
// 遍历已加载的测温区列表,绘制每个区域的框线和编号
|
||||
foreach (TemperatureZone zone in _loadedTemperatureZones)
|
||||
// 使用固定的字体和格式对象绘制区域编号
|
||||
using (Font font = new Font("微软雅黑", 10, FontStyle.Bold))
|
||||
{
|
||||
// 创建画笔,使用区域的颜色作为框线颜色
|
||||
using (Pen pen = new Pen(zone.Color, 2))
|
||||
// 遍历已加载的测温区列表,绘制每个区域的框线和编号
|
||||
foreach (TemperatureZone zone in _loadedTemperatureZones)
|
||||
{
|
||||
// 绘制区域框线
|
||||
g.DrawRectangle(pen, zone.X, zone.Y, zone.Width, zone.Height);
|
||||
}
|
||||
|
||||
// 创建画刷,使用区域的颜色作为文字颜色
|
||||
using (Brush brush = new SolidBrush(zone.Color))
|
||||
{
|
||||
// 绘制区域编号,编号显示在区域左上角
|
||||
PointF numberPosition = new PointF(zone.X + 5, zone.Y + 5);
|
||||
g.DrawString(zone.Index.ToString(), font, brush, numberPosition);
|
||||
// 创建画笔,使用区域的颜色作为框线颜色
|
||||
using (Pen pen = new Pen(zone.Color, 2))
|
||||
{
|
||||
// 绘制区域框线
|
||||
g.DrawRectangle(pen, zone.X, zone.Y, zone.Width, zone.Height);
|
||||
}
|
||||
|
||||
// 创建画刷,使用区域的颜色作为文字颜色
|
||||
using (Brush brush = new SolidBrush(zone.Color))
|
||||
{
|
||||
// 绘制区域编号,编号显示在区域左上角
|
||||
PointF numberPosition = new PointF(zone.X + 5, zone.Y + 5);
|
||||
g.DrawString(zone.Index.ToString(), font, brush, numberPosition);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"绘制区域框时发生异常: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
// 6. 根据温度模式显示温度数据
|
||||
if (isGlobalTemperatureMode)
|
||||
{
|
||||
// 准备温度文本
|
||||
List<string> temperatureTexts = new List<string>();
|
||||
if (_showAverageTemperature)
|
||||
{
|
||||
temperatureTexts.Add($"平均: {temperatureData.AverageTemperature:F2} °C");
|
||||
}
|
||||
if (_showMinTemperature)
|
||||
{
|
||||
temperatureTexts.Add($"最低: {temperatureData.MinTemperature:F2} °C");
|
||||
}
|
||||
if (_showMaxTemperature)
|
||||
{
|
||||
temperatureTexts.Add($"最高: {temperatureData.MaxTemperature:F2} °C");
|
||||
}
|
||||
|
||||
// 记录温度数据日志
|
||||
if (temperatureTexts.Count > 0)
|
||||
{
|
||||
WriteLog($"全局温度数据 - 平均: {temperatureData.AverageTemperature:F2} °C, 最低: {temperatureData.MinTemperature:F2} °C, 最高: {temperatureData.MaxTemperature:F2} °C");
|
||||
}
|
||||
|
||||
// 如果没有要显示的温度文本,直接返回
|
||||
if (temperatureTexts.Count == 0)
|
||||
return;
|
||||
|
||||
// 将List<string>转换为string[],以便传递给DrawTextInAreaCentered方法
|
||||
string[] textsArray = temperatureTexts.ToArray();
|
||||
|
||||
// 调用DrawTextInAreaCentered方法绘制温度文本
|
||||
DrawTextInAreaCentered(g, textsArray);
|
||||
}
|
||||
else if (_showAreaTemperature)
|
||||
{
|
||||
// 区域温度模式:为每个区域计算并显示温度数据
|
||||
using (Font font = new Font("微软雅黑", 10, FontStyle.Bold))
|
||||
{
|
||||
// 遍历已加载的测温区列表,为每个区域显示温度数据
|
||||
foreach (TemperatureZone zone in _loadedTemperatureZones)
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 准备温度文本
|
||||
List<string> areaTemperatureTexts = new List<string>();
|
||||
|
||||
// 直接从ZoneTemperatures字典获取已计算好的区域温度数据
|
||||
if (temperatureData.ZoneTemperatures.TryGetValue(zone.Index, out var zoneTempData))
|
||||
{
|
||||
if (_showMaxTemperature)
|
||||
{
|
||||
areaTemperatureTexts.Add($"最高: {zoneTempData.MaxTemperature:F2} °C");
|
||||
}
|
||||
if (_showMinTemperature)
|
||||
{
|
||||
areaTemperatureTexts.Add($"最低: {zoneTempData.MinTemperature:F2} °C");
|
||||
}
|
||||
if (_showAverageTemperature)
|
||||
{
|
||||
areaTemperatureTexts.Add($"平均: {zoneTempData.AverageTemperature:F2} °C");
|
||||
}
|
||||
}
|
||||
Console.WriteLine($"绘制区域框时发生异常: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
// 创建画刷,使用区域的颜色作为文字颜色
|
||||
using (Brush brush = new SolidBrush(zone.Color))
|
||||
// 6. 根据温度模式显示温度数据
|
||||
if (isGlobalTemperatureMode)
|
||||
{
|
||||
// 准备温度文本
|
||||
List<string> temperatureTexts = new List<string>();
|
||||
if (_showAverageTemperature)
|
||||
{
|
||||
temperatureTexts.Add($"平均: {temperatureData.AverageTemperature:F2} °C");
|
||||
}
|
||||
if (_showMinTemperature)
|
||||
{
|
||||
temperatureTexts.Add($"最低: {temperatureData.MinTemperature:F2} °C");
|
||||
}
|
||||
if (_showMaxTemperature)
|
||||
{
|
||||
temperatureTexts.Add($"最高: {temperatureData.MaxTemperature:F2} °C");
|
||||
}
|
||||
|
||||
// 记录温度数据日志
|
||||
if (temperatureTexts.Count > 0)
|
||||
{
|
||||
WriteLog($"全局温度数据 - 平均: {temperatureData.AverageTemperature:F2} °C, 最低: {temperatureData.MinTemperature:F2} °C, 最高: {temperatureData.MaxTemperature:F2} °C");
|
||||
}
|
||||
|
||||
// 如果没有要显示的温度文本,直接返回
|
||||
if (temperatureTexts.Count == 0)
|
||||
return;
|
||||
|
||||
// 将List<string>转换为string[],以便传递给DrawTextInAreaCentered方法
|
||||
string[] textsArray = temperatureTexts.ToArray();
|
||||
|
||||
// 调用DrawTextInAreaCentered方法绘制温度文本
|
||||
DrawTextInAreaCentered(g, textsArray);
|
||||
}
|
||||
else if (_showAreaTemperature)
|
||||
{
|
||||
// 区域温度模式:为每个区域计算并显示温度数据
|
||||
using (Font font = new Font("微软雅黑", 10, FontStyle.Bold))
|
||||
{
|
||||
// 遍历已加载的测温区列表,为每个区域显示温度数据
|
||||
foreach (TemperatureZone zone in _loadedTemperatureZones)
|
||||
{
|
||||
// 绘制温度文本,从区域左上角开始,向下排列
|
||||
float currentY = zone.Y + 20; // 从区域编号下方开始
|
||||
foreach (string text in areaTemperatureTexts)
|
||||
// 准备温度文本
|
||||
List<string> areaTemperatureTexts = new List<string>();
|
||||
|
||||
// 直接从ZoneTemperatures字典获取已计算好的区域温度数据
|
||||
if (temperatureData.ZoneTemperatures.TryGetValue(zone.Index, out var zoneTempData))
|
||||
{
|
||||
PointF textPosition = new PointF(zone.X + 5, currentY);
|
||||
g.DrawString(text, font, brush, textPosition);
|
||||
currentY += 20; // 每行间隔20像素
|
||||
if (_showMaxTemperature)
|
||||
{
|
||||
areaTemperatureTexts.Add($"最高: {zoneTempData.MaxTemperature:F2} °C");
|
||||
}
|
||||
if (_showMinTemperature)
|
||||
{
|
||||
areaTemperatureTexts.Add($"最低: {zoneTempData.MinTemperature:F2} °C");
|
||||
}
|
||||
if (_showAverageTemperature)
|
||||
{
|
||||
areaTemperatureTexts.Add($"平均: {zoneTempData.AverageTemperature:F2} °C");
|
||||
}
|
||||
}
|
||||
|
||||
// 创建画刷,使用区域的颜色作为文字颜色
|
||||
using (Brush brush = new SolidBrush(zone.Color))
|
||||
{
|
||||
// 绘制温度文本,从区域左上角开始,向下排列
|
||||
float currentY = zone.Y + 20; // 从区域编号下方开始
|
||||
foreach (string text in areaTemperatureTexts)
|
||||
{
|
||||
PointF textPosition = new PointF(zone.X + 5, currentY);
|
||||
g.DrawString(text, font, brush, textPosition);
|
||||
currentY += 20; // 每行间隔20像素
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user