From b8d86924a23edcaf3e4479f40c1891aa93f55184 Mon Sep 17 00:00:00 2001 From: zqm Date: Wed, 21 Jan 2026 14:36:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BC=A0=E6=A0=87=E6=B8=A9=E5=BA=A6=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E5=8F=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CS/Framework4.0/Toprie/Toprie/Camera.cs | 9 ++++++--- .../CS/Framework4.0/Toprie/Toprie/preview.cs | 20 ++++++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs index 82f1d14..8d968d2 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs @@ -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窗口 diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/preview.cs b/Windows/CS/Framework4.0/Toprie/Toprie/preview.cs index ddbd779..deeaa23 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/preview.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/preview.cs @@ -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); + } + } } /// @@ -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); } // 获取特定数据点的温度值