c# - 有没有一种有效的方法可以在 Windows 窗体中每秒绘制 30 个位图?
问题描述
我现在正在从事一个科学项目,这是我人生中的第一次,而且从来不用处理效率问题。现在我有一个巨大的问题,我必须绘制的所有热图的计算都可以完美地工作,但是位图抽屉无法处理将 30 个位图绘制到图片框上。
有谁知道绘制位图的不同方法?它不必是一个图片框。
我知道有类似的问题,但它们都不适用于 Windows 窗体(我不得不选择 Windows 窗体而不是 WPF,因为这里需要很长时间才能解释的原因)。
这是我关于堆栈溢出的第一篇文章,如果我犯了错误,请原谅。
预先感谢您的帮助。
乔纳森
编辑:该应用程序是为使用 200Hz 的实时数据而构建的,因为大多数屏幕显然无法处理这个我只显示 30 FPS 并以 200Hz 记录日期,这也是为了补偿性能问题,但性能仍然很差。如果我有更好的显示帧的方式,我可能会选择大约 60FPS - 120FPS。
这些图像都像视频的单帧和 2x 500px 900px 像素大(2因为我同时有两个传感器,它们都为完整的热图提供数据)。我使用skiasharp 创建位图,因为我听说这是最有效的方法。
我希望我回答了所有被问到的问题。
解决方案
我已经在内存中绘制位图了,但是 Ken White 的提示让我想到了在分配位图之前将其写入图像变量的想法,并且由于我不明白的原因它起作用了。一次绘图调用所需的时间减少了大约 50%。谢谢你的小费肯怀特。
推荐阅读
- mql4 - 我如何称呼这个指标?
- swift - 将多个文本字段作为一个绑定值传递的推荐方法
- java - 如何制作这个 GUI?
- angular - Angular Material Theme 不适用于延迟加载的模块?
- reactjs - 为什么 takeLeading redux-sagas 不起作用
- python - 基于匹配(但不相同)索引值/列标签的条件操作
- algorithm - 要更改的问题类别名称
- python - 熊猫在分组期间聚合并加入数据帧
- asp.net-core - Asp.Net Core 和 IIS 服务器:未在生产中设置会话 cookie
- java - 给定最终块在 AES 解密中未正确填充