锁定当前屏幕图像 - LockDisplay
函数简介
锁定当前屏幕图像,用于在一定时间内复用同一帧截图数据。启用锁定后,后续截图接口(如 GetScreenDataPtr 等)将始终返回锁定时的那一帧图像,可避免频繁截图带来的性能消耗和画面抖动。
接口名称
LockDisplay
DLL调用
int32_t LockDisplay(int64_t instance, int32_t enable)
参数定义:
instance(长整型数): OLAPlug 对象的指针,由 CreateCOLAPlugInterFace 接口生成。enable(整型数): 锁定标志。0: 取消锁定,清空锁定图像并释放内存1: 锁定当前屏幕图像,后续截图将返回锁定图像
示例:
// 锁定当前屏幕图像
int32_t ret = LockDisplay(ola, 1);
if (ret == 1) {
printf("锁定当前屏幕图像成功\n");
// 多次调用截图接口,都会返回同一帧图像
long img1 = GetScreenDataPtr(ola, 0, 0, 800, 600); // 返回锁定图像
long img2 = GetScreenDataPtr(ola, 0, 0, 800, 600); // 仍然返回同一帧锁定图像
// 使用完图像后需要释放内存
if (img1 != 0) FreeImagePtr(ola, img1);
if (img2 != 0) FreeImagePtr(ola, img2);
}
// 取消锁定并释放锁定图像
LockDisplay(ola, 0);
返回值
整型数:
0: 操作失败1: 操作成功
注意事项
- 锁定后,
GetScreenDataPtr等截图接口将返回锁定时的那一帧图像,而不是实时屏幕内容。 - 当不再需要锁定功能时,调用
LockDisplay(instance, 0)取消锁定,以释放锁定图像占用的内存。 - 锁定与截图缓存(
SetSnapCacheTime)可以配合使用,但应根据实际需求合理配置,以避免占用过多内存。 - 若当前截图模式或绑定模式不支持锁定,接口可能返回失败,可通过 OLAGetLastError 获取错误码。
