diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs index e7f46c6..4feae02 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs @@ -3029,7 +3029,7 @@ namespace JoyD.Windows.CS.Toprie StringFormat format = new StringFormat { Alignment = StringAlignment.Near, // 左对齐 - LineAlignment = StringAlignment.Center // 垂直居中 + LineAlignment = StringAlignment.Near // 顶部对齐,由代码控制垂直居中 }; // 如果没有指定区域,使用整个图像框作为默认区域 @@ -3170,47 +3170,43 @@ namespace JoyD.Windows.CS.Toprie else if (_showAreaTemperature) { // 区域温度模式:为每个区域计算并显示温度数据 - using (Font font = new Font("微软雅黑", 10, FontStyle.Bold)) + foreach (TemperatureZone zone in _loadedTemperatureZones) { - // 遍历已加载的测温区列表,为每个区域显示温度数据 - foreach (TemperatureZone zone in _loadedTemperatureZones) + // 准备温度文本 + List areaTemperatureTexts = new List(); + + // 直接从ZoneTemperatures字典获取已计算好的区域温度数据 + if (temperatureData.ZoneTemperatures.TryGetValue(zone.Index, out var zoneTempData)) { - // 准备温度文本 - List areaTemperatureTexts = new List(); - - // 直接从ZoneTemperatures字典获取已计算好的区域温度数据 - if (temperatureData.ZoneTemperatures.TryGetValue(zone.Index, out var zoneTempData)) + if (_showMaxTemperature) { - if (_showMaxTemperature) - { - areaTemperatureTexts.Add($"最高: {zoneTempData.MaxTemperature:F2} °C"); - } - if (_showMinTemperature) - { - areaTemperatureTexts.Add($"最低: {zoneTempData.MinTemperature:F2} °C"); - } - if (_showAverageTemperature) - { - areaTemperatureTexts.Add($"平均: {zoneTempData.AverageTemperature:F2} °C"); - } + areaTemperatureTexts.Add($"最高: {zoneTempData.MaxTemperature:F2} °C"); } + if (_showMinTemperature) + { + areaTemperatureTexts.Add($"最低: {zoneTempData.MinTemperature:F2} °C"); + } + if (_showAverageTemperature) + { + areaTemperatureTexts.Add($"平均: {zoneTempData.AverageTemperature:F2} °C"); + } + } - // 将相对坐标转换为绝对坐标 - int absoluteX = _detectionZone.X + zone.X; - int absoluteY = _detectionZone.Y + zone.Y; + // 将相对坐标转换为绝对坐标 + int absoluteX = _detectionZone.X + zone.X; + int absoluteY = _detectionZone.Y + zone.Y; + + // 如果有温度文本需要绘制 + if (areaTemperatureTexts.Count > 0) + { + // 创建表示测温区的矩形区域 + RectangleF zoneArea = new RectangleF(absoluteX, absoluteY, zone.Width, zone.Height); - // 创建画刷,使用区域的颜色作为文字颜色 - using (Brush brush = new SolidBrush(zone.Color)) - { - // 绘制温度文本,从区域左上角开始,向下排列 - float currentY = absoluteY + 20; // 从区域编号下方开始,使用绝对坐标 - foreach (string text in areaTemperatureTexts) - { - PointF textPosition = new PointF(absoluteX + 5, currentY); - g.DrawString(text, font, brush, textPosition); - currentY += 20; // 每行间隔20像素 - } - } + // 将List转换为string[],以便传递给DrawTextInAreaCentered方法 + string[] textsArray = areaTemperatureTexts.ToArray(); + + // 调用DrawTextInAreaCentered方法绘制温度文本,文本会在区域内垂直居中 + DrawTextInAreaCentered(g, textsArray, zone.Color, zoneArea); } } }