添加项目文件。
This commit is contained in:
94
CurveCaptureHelper.cs
Normal file
94
CurveCaptureHelper.cs
Normal file
@@ -0,0 +1,94 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
|
||||
namespace PLCDataMonitor
|
||||
{
|
||||
public static class CurveCaptureHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 捕获CurvePage的曲线Canvas并转为BitmapImage
|
||||
/// </summary>
|
||||
public static BitmapImage CaptureCurve(Canvas curveCanvas)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 创建与Canvas大小一致的渲染目标
|
||||
RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
|
||||
(int)curveCanvas.ActualWidth,
|
||||
(int)curveCanvas.ActualHeight,
|
||||
96, 96,
|
||||
PixelFormats.Pbgra32);
|
||||
|
||||
// 渲染Canvas到Bitmap
|
||||
renderBitmap.Render(curveCanvas);
|
||||
|
||||
// 转为PNG格式图片
|
||||
PngBitmapEncoder encoder = new PngBitmapEncoder();
|
||||
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
|
||||
|
||||
// 保存到内存流
|
||||
MemoryStream ms = new MemoryStream();
|
||||
encoder.Save(ms);
|
||||
ms.Position = 0;
|
||||
|
||||
// 转为BitmapImage返回(供Excel插入)
|
||||
BitmapImage bitmap = new BitmapImage();
|
||||
bitmap.BeginInit();
|
||||
bitmap.StreamSource = ms;
|
||||
bitmap.CacheOption = BitmapCacheOption.OnLoad;
|
||||
bitmap.EndInit();
|
||||
bitmap.Freeze(); // 冻结图片,支持跨线程访问
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"曲线截图失败:{ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ReportData
|
||||
{
|
||||
// 记录时间
|
||||
public string Time { get; set; }
|
||||
// 工位1压力(MPa)
|
||||
public string Pressure1 { get; set; }
|
||||
// 工位2压力(MPa)
|
||||
public string Pressure2 { get; set; }
|
||||
// 工位1最大摩擦力(N)
|
||||
public string Friction1 { get; set; }
|
||||
// 工位2最大摩擦力(N)
|
||||
public string Friction2 { get; set; }
|
||||
|
||||
|
||||
public float? t1 { get; set; }
|
||||
|
||||
public float? t2 { get; set; }
|
||||
|
||||
public float? D { get; set; }
|
||||
|
||||
public string Id { get; set; }
|
||||
|
||||
// 构造函数(用于创建数据实例)
|
||||
public ReportData(string time, string pressure1, string pressure2, string friction1, string friction2, float? t1, float? t2, float? d)
|
||||
{
|
||||
Time = time;
|
||||
Pressure1 = pressure1;
|
||||
Pressure2 = pressure2;
|
||||
Friction1 = friction1;
|
||||
Friction2 = friction2;
|
||||
this.t1 = t1;
|
||||
this.t2 = t2;
|
||||
D = d;
|
||||
}
|
||||
|
||||
// 无参构造函数(供XAML示例数据使用)
|
||||
public ReportData() { }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user