温度显示为居中模式

This commit is contained in:
zqm
2026-01-12 09:17:37 +08:00
parent 39600b0bbe
commit c7e189763e

View File

@@ -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<string> areaTemperatureTexts = new List<string>();
// 直接从ZoneTemperatures字典获取已计算好的区域温度数据
if (temperatureData.ZoneTemperatures.TryGetValue(zone.Index, out var zoneTempData))
{
// 准备温度文本
List<string> areaTemperatureTexts = new List<string>();
// 直接从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");
}
// 将相对坐标转换为绝对坐标
int absoluteX = _detectionZone.X + zone.X;
int absoluteY = _detectionZone.Y + zone.Y;
// 创建画刷,使用区域的颜色作为文字颜色
using (Brush brush = new SolidBrush(zone.Color))
if (_showMinTemperature)
{
// 绘制温度文本,从区域左上角开始,向下排列
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像素
}
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;
// 如果有温度文本需要绘制
if (areaTemperatureTexts.Count > 0)
{
// 创建表示测温区的矩形区域
RectangleF zoneArea = new RectangleF(absoluteX, absoluteY, zone.Width, zone.Height);
// 将List<string>转换为string[]以便传递给DrawTextInAreaCentered方法
string[] textsArray = areaTemperatureTexts.ToArray();
// 调用DrawTextInAreaCentered方法绘制温度文本文本会在区域内垂直居中
DrawTextInAreaCentered(g, textsArray, zone.Color, zoneArea);
}
}
}