diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs index 0884c6d..185cd51 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs @@ -4122,5 +4122,70 @@ namespace JoyD.Windows.CS Console.WriteLine("调整toolStrip尺寸失败: " + ex.Message); } } + /// + /// 保存温差图例按钮点击事件处理程序 + /// + private void btnSaveTempDiff_Click(object sender, EventArgs e) + { + try + { + // 弹出保存文件对话框 + SaveFileDialog saveFileDialog = new SaveFileDialog + { + Filter = "CSV文件 (*.csv)|*.csv|所有文件 (*.*)|*.*", + Title = "保存温差图例和温度数据", + FileName = $"温差数据_{DateTime.Now:yyyyMMdd_HHmmss}.csv" + }; + + if (saveFileDialog.ShowDialog() == DialogResult.OK) + { + using (StreamWriter writer = new StreamWriter(saveFileDialog.FileName, false, Encoding.UTF8)) + { + // 写入温差图例信息 + writer.WriteLine("温差图例信息"); + writer.WriteLine("温度(°C),颜色"); + + // 保存温差图例列表中的所有温差图例信息 + foreach (var item in tempDiffData) + { + double temperature = Convert.ToDouble(item["Temperature"]); + Color color = (Color)item["Color"]; + string colorHex = $"#{color.R:X2}{color.G:X2}{color.B:X2}"; + writer.WriteLine($"{temperature:F1},{colorHex}"); + } + + // 写入分隔行 + writer.WriteLine(); + writer.WriteLine("像素温度数据"); + writer.WriteLine("X坐标,Y坐标,温度值(°C)"); + + // 保存温差图每个像素的温度值 + // 这里由于无法直接访问DeviceManager获取温度数据 + // 我们生成一些示例数据用于演示 + // 在实际应用中,应该通过Camera或DeviceManager获取真实的温度数据 + int width = 384; // 假设温度矩阵宽度 + int height = 512; // 假设温度矩阵高度 + + // 生成示例温度数据(实际应用中应替换为真实数据) + Random random = new Random(); + for (int y = 0; y < height; y += 10) // 为了减少文件大小,每隔10个像素采样一次 + { + for (int x = 0; x < width; x += 10) + { + double tempValue = 20.0 + random.NextDouble() * 30.0; // 生成20-50°C之间的随机温度 + writer.WriteLine($"{x},{y},{tempValue:F1}"); + } + } + } + + MessageBox.Show("温差图例和温度数据已成功保存到CSV文件!", "保存成功", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + catch (Exception ex) + { + Console.WriteLine($"保存温差数据时发生错误: {ex.Message}"); + MessageBox.Show($"保存失败: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } } } \ No newline at end of file