c# - 表单之间的连续数据传递
问题描述
我有一个 MainForm 从相机(15-20 FPS)接收图像并从这些图像中提取数据。我希望能够绘制这些数据,因此我需要一个Chart
可以在接收到的每一帧上更新的对象。
不幸的是,我认为我正在使用的相机(Vimba)的 API写得很奇怪,我无法Chart
在处理帧接收和数据提取的同一事件中绘制 API。它只是不起作用(在 API 中,任何涉及图形对象但不只是将接收到的图像放入 aBitmap
或将所述位图放入 a 的指令PictureBox
都不会运行,我不知道为什么)。
我已经与这个问题斗争了几天,我还没有尝试过的一件事是将从图像中提取的数据传递给另一个Form
,并在那里绘制图表。我的问题是我不知道如何在收到的每一帧上将数据发送到新表单。我已经使用了一种简单的方法将数据发送到另一个Form
ONCE,但不是连续的。有人可以向我解释如何实现这一目标吗?
这是计算机从相机接收到帧时运行的事件(我要绘制的数据存储在 中PixelColorCOuntReady
):
private void OnFrameReceived(Frame frame)
{
Bitmap myBitmap = null;
if (true == m_Acquiring)
{
mycamera.QueueFrame(frame);
}
frame.Fill(ref myBitmap);
pictureBoxLiveCamera.Image = myBitmap;
SaveBitmap = myBitmap.Clone(cloneRect, myBitmap.PixelFormat);
Array.Clear(PixelColorCount, 0, 256);
unsafe
{
int width = SaveBitmap.Width;
int height = SaveBitmap.Height;
int bytesPerPixel = 1;
int maxPointerLength = width * height * bytesPerPixel;
int stride = width * bytesPerPixel;
System.Drawing.Imaging.BitmapData bData = SaveBitmap.LockBits(new System.Drawing.Rectangle(0, 0, SaveBitmap.Width, SaveBitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, SaveBitmap.PixelFormat);
byte* scan0 = (byte*)bData.Scan0.ToPointer();
byte B;
for (int i = 0; i < maxPointerLength; i++)
{
B = scan0[i];
PixelColorCount[B] += 1;
}
SaveBitmap.UnlockBits(bData);
}
PixelColorCountReady = PixelColorCount.DeepClone();
}
解决方案
推荐阅读
- office-js - Excel Web 加载项读取自定义 XML 属性
- c# - 添加额外的基类来阻止
- reactjs - 当整个类传给后台值时,这是什么语法
- python - ndb.Expando 模型属性的控制索引
- akka - Akka Decider 是否可以访问完整的失败场景?
- python - pandas to_excel() 忽略/允许重复的列名
- xml - “构建”一个整理所有 XInclude 的 XML 文件
- c++ - 前向声明与包含在 Google c++ 样式指南中
- angular - 在 Angular 2/4 中使用 http.get() 进行递归调用
- qt - 在 QTabWidget 中添加图表