鼠标温度实时变化

This commit is contained in:
zqm
2026-01-21 14:36:27 +08:00
parent 30117b5ae0
commit b8d86924a2
2 changed files with 25 additions and 4 deletions

View File

@@ -1220,8 +1220,11 @@ namespace JoyD.Windows.CS.Toprie
// 调用温度显示更新方法
// 在就绪条件下,调用更新实时信息
bool isReady = _deviceManager != null && (_isFirst || (!_isPaused && IsDevicePingable && _deviceManager.ConnectionStatus == ConnectionStatus.Connected));
if (isReady)
// 获取当前温度数据(在方法开始时获取,确保整个方法使用同一数据)
TemperatureData currentTemperatureData = null;
if (isReady && _deviceManager != null)
{
currentTemperatureData = _deviceManager.LastTemperature;
UpdateRealTimeInfoOnUI();
}
@@ -1329,8 +1332,8 @@ namespace JoyD.Windows.CS.Toprie
if (_previewForm != null && !_previewForm.IsDisposed)
{
_previewForm.UpdateImage(tempImage);
// 传递温度数据给预览窗口
_previewForm.UpdateTemperatureData(_deviceManager.LastTemperature);
// 传递温度数据给预览窗口 - 使用本地变量确保数据一致性
_previewForm.UpdateTemperatureData(currentTemperatureData);
}
// 步骤5同步更新检测配置窗口的实时图像属性
// 创建LastImage的副本并通过UpdateRealTimeImage方法传递给Setting窗口

View File

@@ -100,6 +100,17 @@ namespace JoyD.Windows.CS
// 更新温度数据
_temperatureData = temperatureData;
// 温度数据更新后,自动重新计算当前鼠标指向点的温度
lock (_dataPointLock)
{
if (_currentDataPoint.X >= 0 && _currentDataPoint.Y >= 0)
{
// 重新获取温度值并使用防抖机制更新标题栏
float temperature = GetTemperatureAtDataPoint(_currentDataPoint);
UpdateTitleBarWithDebounce(temperature);
}
}
}
/// <summary>
@@ -255,7 +266,14 @@ namespace JoyD.Windows.CS
int y = Math.Max(0, Math.Min(imagePoint.Y, DISPLAY_HEIGHT - 1));
// 计算原始数据点坐标(整数除法,向下取整)
return new Point(x / 2, y / 2);
int dataX = x / 2;
int dataY = y / 2;
// 确保数据点坐标在有效范围内
dataX = Math.Max(0, Math.Min(dataX, DATA_WIDTH - 1));
dataY = Math.Max(0, Math.Min(dataY, DATA_HEIGHT - 1));
return new Point(dataX, dataY);
}
// 获取特定数据点的温度值