阅读(99+)评论(0)

Mre开发中图层的创建、刷新、删除等操作

// 创建基础图层并设置剪辑区域。 剪辑区域是全屏。
void vm_graphic_lock(void);
// 创建基础图层(如果不存在)并将剪辑区域重置为全屏。
void vm_initialize_screen_buffer(void);

// 将基础图层数据刷新到LCD。
void vm_graphic_flush_buffer(void);
// 将基础图层数据刷新到LCD,并删除图层
void vm_graphic_unlock(void);

// 获取基础图层缓冲区
VMUINT8 * vm_graphic_get_buffer(void);
// 删除基础图层。
void vm_finalize_screen_buffer(void);

// 获取基础图层缓冲区并将剪辑区域设置为全屏大小
void vm_dd_initialize_clip_rect(void);
// 设置剪辑区域
void vm_dd_set_clip(VMINT x, VMINT y, VMINT width, VMINT height);
// 将剪辑区域重置为全屏大小
void vm_dd_reset_clip(void);

有图层句柄

/****************************************
* 函数
* vm_graphic_create_layer
* 描述
* 使用此API,用户最多可以创建两个层,用户不需要额外的内存。
* 第0层:与LCD尺寸和位置相同。 这意味着,左上角坐标必须是(0,0),宽度=屏幕宽度和高度=屏幕高度
* 第1层:用户可以设置不透明度,位置,大小(不能大于LCD的大小)。
* 这两个图层可以与指定的不透明度合并
* 参数
* x : [IN] 左上角坐标 x
* y : [IN] 左上角坐标 y
* width : [IN] 图层的宽度,单位:像素
* height : [IN] 图层的高度,单位:像素
* trans_color : [IN] 透明的颜色。 -1 表示没有透明的颜色。
* 返回
* 如果成功,则返回图层句柄,如果失败,则返回错误代码
* 例子
* VMINT layer_hdl[2] = {0};
* layer_hdl[0] = vm_graphic_create_layer(0, 0, vm_graphic_get_screen_width(), vm_graphic_get_screen_height(), VM_NO_TRANS_COLOR);
* //user can draw on the layer
* vm_graphic_line_ex( layer_hdl[0],0,0,100,100);
* ....
* // when need to show it to the LCD
* vm_graphic_flush_layer( layer_hdl[0], 1);
* //when no more use the layer, delete it
* vm_graphic_delete_layer(layer_hdl[0]);
****************************************/
VMINT vm_graphic_create_layer(VMINT x, VMINT y, VMINT width, VMINT height, VMINT trans_color);

/**************************************
* 函数
* vm_graphic_delete_layer
* 描述
* 删除vm_graphic_create_layer创建的图层。 用户可以在应用退出时释放图层
* 参数
* handle : [IN] 要删除的图层句柄
* 返回
* 如果成功,返回VM_GDI_SUCCEED。 否则,返回错误代码
**************************************/
VMINT vm_graphic_delete_layer(VMINT handle);

/**************************************
* 函数
* vm_graphic_active_layer
* 描述
* 激活图层。 所有GDI操作仅对活动层有效。
* 参数
* handle : [IN] 要激活的图层句柄。如果图层句柄错误,系统将不会更改,这意味着当前活动图层不会更改
* 返回
* 如果成功,则返回VM_GDI_SUCCEED。 否则,返回错误代码
***************************************/
VMINT vm_graphic_active_layer(VMINT handle);

/***************************************
* 函数
* vm_graphic_get_layer_buffer
* 描述
* 获取、得到指定图层的缓冲区
* 参数
* handle : [IN] 图层句柄
* 返回
* 如果成功,返回缓冲区地址。 否则,返回NULL
**************************************/
VMUINT8* vm_graphic_get_layer_buffer (VMINT handle);

/**************************************
* 函数
* vm_graphic_clear_layer_bg
* 描述
* 用透明色清洁图层。 颜色与vm_graphic_create_layer()中使用的trans_color相同
* 参数
* handle : [IN]layer handle
* 返回
* 如果成功,则返回VM_GDI_SUCCEED。 否则,返回VM_GDI_FAILED
**************************************/
VMINT vm_graphic_clear_layer_bg (VMINT handle);


/**************************************
* 函数
* vm_graphic_flush_layer
* 描述
* 将图层压平到一个层并将图层刷新到LCD。 只有调用此API应用程序可以更新LCD
* 参数
* layer_handles : [IN] 图层数组的指针
* count : [IN] 要刷新的图层编号。 如果数字大于最大图层数(通过vm_graphic_get_blt_layer_count()获取),只需使用最大图层数
* 返回
* 如果成功,则返回VM_GDI_SUCCEED。 否则,返回错误代码
**************************************/
VMINT vm_graphic_flush_layer(VMINT* layer_handles, VMINT count);

/*************************************
* 函数
* vm_graphic_flush_layer_non_block
* 描述
* 将图层压平到一个图层并对LCD非块进行blt。
* 参数
* layer_handles : [IN] 图层数组的指针
* count : [IN] 要刷新的图层编号。 如果数字大于最大图层数(通过vm_graphic_get_blt_layer_count()获取),只需使用最大图层数
* 返回
* 如果成功,则返回VM_GDI_SUCCEED。 否则,返回错误代码
*************************************/
VMINT vm_graphic_flush_layer_non_block(VMINT* layer_handles, VMINT count);
发表回复
回复
最新回复
空空如也

2024-09-17 04:01:56 星期二