VAPS XT开发入门教程33:动态加载图片

系列索引:VAPS XT开发入门教程索引

上一篇:VAPS XT开发入门教程32:PFD

VAPS XT使用ImageTable加载图片,图片添加到工程中后会被处理成vtbl格式的资源文件,实际上就是将图片解码为原始数据并保存。

但是这样有一个问题,程序运行时会将所有资源加载进内存。如果PC本身硬件配置较低(国企申请比较麻烦,并且硬件一旦部署不坏不换),图片资源一多就会导致程序崩溃。

如果可以像DLL一样,使用的时候再加载资源,就会节省很多硬件资源。

先创建一个空白工程。

project

然后添加一个Format用于显示图片。

format

在Tables->ImageTable中添加一个新ImageTableElement(添加的图片格式只能是bmp/png)。

imagetableelement

我使用的测试图片为8K高清修复版的1927年索尔维会议合照,jpg格式大小为9.2MB,使用FFmpeg将其转换为png后大小为42MB。

在Format中添加一个Image控件,用于显示图片。

image

使用Ctrl+F6编译运行程序

resources

程序启动之后占用内存为200M。

size

程序大小为148M。

将ImageTable的图片的Properties中的PictureFormats调整为FILENAME表示从文件中加载图片文件。

properties

编译运行会发现是黑屏,很明显是图片没有加载。

我们使用exe文件所在的文件夹中的启动脚本*.bat运行。

执行之后会等待一段时间(1-2S,毕竟要加载图片进内存,而且图片越大加载时间越长,不过一般是图片几百K,但是数量多)。

result

可以看出生成的exe文件变小了,占用的硬件资源也变小了。

缺点就是切换图片会耗时。

经过测试此方法可以用在4.0.1 ~ 4.2.1

下一篇:VAPS XT开发入门教程34:加载VAPS XT CodedObject DLL

如果你有问题,如果是简单的问题可以发邮件给免费解惑,如果涉及难问题或者需要提供附加的服务(比如授权、大工程集成编译、多分区相关,或者作为中间商联系Presagis)可以联系上海亥伯智能科技有限公司 邮箱


VAPS XT开发入门教程33:动态加载图片
https://feater.top/vapsxt/vapsxt-dynamic-load-images
作者
JackeyLea
发布于
2021年7月31日
许可协议