我所需要的动态显示不是摄像头或视频的图像显示,而是类似于任务管理器CUP、内存使用率的动态显示,在显示界面动态绘制彩图、二维/三维坐标图,以前使用过TeeChart用来数学作图,但显然不适合用在现在所作的探地雷达图形显示。
探地雷达图像显示的基本要求:
1. 探地雷达原始数据得到的灰度图、光谱图,随接收数据包从右至左移动
2. 显示当前采集波形
3. 有固定的时间距离坐标尺
4. 图形生成和显示代码执行效率要高,便于移植到ARM平台上也能顺畅运行
今天学习到TImage可以加载TStream,将雷达原始数据处理后放在内存中,再将内存中的图像显示出来,这样将会提高图形动态刷新的速度。
具体的方法:
1. 初始化时生成一张所需大小的Bitmap
2. 调用SaveToStream得到一个内存流
3. 根据Bitmap文件结构定位每个像素点所在内存地址,即TMemoryStream->Memory + 偏移地址
4. 每次接收到数据后修改TMemoryStream->Memory中的数据,然后LoadFromStream()、Repaint()刷新图像。