|
本帖最后由 卡米拉 于 2021-3-9 09:42 编辑
http://video.gz-dc.com/%E3%80%90M%E5%9E%8B%E3%80%91AV%E8%BE%93%E5%85%A5%E5%9D%90%E6%A0%87%E6%98%BE%E7%A4%BA%E5%92%8C%E8%A7%86%E9%A2%91%E4%BB%BB%E6%84%8F%E5%BD%A2%E7%8A%B6%E6%92%AD%E6%94%BE.mp4
演示视频
一、适合范围
文档仅适用于大彩M型系列串口屏产品。
二、开发环境版本
1. VisualTFT软件版本:V3.0.0.1137及以上的版本。
版本查看:
a) 打开VisualTFT软件启动页面如图2-1软件版本,右上角会显示的软件版本号;
图2-1软件版本
b) 打开VisualTFT,在软件右下角可以查看软件版本图2-2所示;最新版本可登录http://www.gz-dc.com/进行下载。
图2-2软件版本
2. 串口屏固件版本: V6.3.325.0 及以上的版本。
版本查看:
a) 查看屏幕背面版本号贴纸;
b) VisualTFT与屏幕联机成功后,右下角显示的版本号。
三、使用说明
针对M型系列的视频播放功能,利用视频控件播放视频时,视频图层会一直显示在最上层,此时如果我们将文字等其他图形叠加放在视频控件上显示时,视频图层会将其他图形都覆盖,导致只能显示出视频,而无法显示视频上叠放的其他文字和图形。 - 为此,我司针对有此类需求的客户开发了对应的M系列视频底层播放API接口,来满足此类客户的需求。API函数接口:set_color_key(Min_Color,Max_Color,Match)
- u 函数说明:
a) Min_Color:24位RGB颜色范围的最小值,例如0x00BFBFBF,R-BF/G-BF/B-BF;
b) Min_Color:24位RGB颜色范围的最大值,例如0x00C8C8C8,R-C8/G-C8/B-C8;
c) Match:6位的比较规则101010(2A);10-R/10-G/10-B,代表颜色范围在0x00BFBFBF—0x00C8C8C8之间的颜色值经过比较后会被过滤。(0x00BFBFBF <= color <= 0x00C8C8C8之间的颜色会被过滤,其他颜色会显示出来)
- function on_init()
- set_color_key(0x00BFBFBF,0x00C8C8C8,0x0000002A)
- end
复制代码 注:set_color_key(Min_Color,Max_Color,Match),此API接口函数必须要放在on_init()系统初始化函数中使用,默认在初始时配置的属性。
四、示例说明
4.1 AV输入坐标显示
4.1.1 工程属性配置介绍
- 视频控件配置:拖动选择视频控件,用途选择播放AV输入。
- 按钮配置:
◎ 上:控制十字光标显示坐标y减。
◎ 下:控制十字光标显示坐标y加。
◎ 左:控制十字光标显示坐标x减。
◎ 右:控制十字光标显示坐标x加。
4.1.2 LUA脚本逻辑实现
LUA脚本配置实现代码:
- --[[ 十字光标坐标显示点 ]]
- local LineH_Y = 263
- --十字显示光标点y坐标
- local LineV_X = 240
- --十字显示光标点x坐标
- local TextH_X = LineV_X + 5
- --坐标text显示的坐标位置
- local TextH_Y = LineH_Y - 40
- local TextV_X = LineV_X + 5
- local TextV_Y = LineH_Y - 20
- function on_init()
- --初始化
- set_color_key(0x00BFBFBF,0x00C8C8C8,0x0000002A)
- --设置颜色过滤属性(必须在on_init()中配置)
- end
- function on_draw(screen)
- --界面刷新回调函数,具体使用说明参考《LUA脚本API》
- if screen == 1 then
- set_pen_color(0x3666)
- --设置画笔颜色
- draw_line(40,LineH_Y,440,LineH_Y,1)
- --画十字线
- draw_line(LineV_X,63,LineV_X,440,1)
- local text_h = "LineH_Y:"..LineH_Y
- local text_v = "LineV_X:"..LineV_X
- draw_text(text_h,TextH_X,TextH_Y,90,20,4,0x3666,4)
- --画坐标text显示
- draw_text(text_v,TextV_X,TextV_Y,90,20,4,0x3666,4)
- end
- end
- function on_control_notify(screen,control,value)
- --触摸控件回调函数
- if screen == 1 then
- if control == 6 then
- --上
- if value == 1 then
- LineH_Y = LineH_Y - 1
- if LineH_Y < 63 then
- LineH_Y = 63
- end
- elseif value == 2 then
- LineH_Y = LineH_Y - 5
- if LineH_Y < 63 then
- LineH_Y = 63
- end
- end
- elseif control == 7 then
- --下
- if value == 1 then
- LineV_X = LineV_X - 1
- if LineV_X < 63 then
- LineV_X = 63
- end
- elseif value == 2 then
- LineV_X = LineV_X - 5
- if LineV_X < 63 then
- LineV_X = 63
- end
- end
- elseif control == 8 then
- --左
- if value == 1 then
- LineH_Y = LineH_Y + 1
- if LineH_Y > 440 then
- LineH_Y = 463
- end
- elseif value == 2 then
- LineH_Y = LineH_Y + 5
- if LineH_Y > 440 then
- LineH_Y = 463
- end
- end
- elseif control == 9 then
- --右
- if value == 1 then
- LineV_X = LineV_X + 1
- if LineV_X > 440 then
- LineV_X = 440
- end
- elseif value == 2 then
- LineV_X = LineV_X + 5
- if LineV_X > 440 then
- LineV_X = 440
- end
- end
- end
- follow_pos(LineV_X,LineH_Y)
- --text显示坐标传入
- redraw()
- end
- end
- function on_press(state,x,y)
- --触摸屏点击回调函数
- if get_current_screen() == 1 then
- if state == 1 or state == 2 then
- if x >= 40 and x <= 440 then
- if y >= 63 and y <= 463 then
- follow_pos(x,y)
- LineV_X = x
- LineH_Y = y
- redraw()
- end
- end
- end
- end
- end
- function follow_pos(p_x,p_y)
- --text坐标显示
- print("p_x = "..p_x)
- print("p_y = "..p_y)
- if p_x < 240 and p_y < 263 then
- TextV_X = p_x + 5
- TextH_X = p_x + 5
- TextV_Y = p_y + 5
- TextH_Y = p_y + 25
- elseif p_x < 240 and p_y > 263 then
- TextV_X = p_x + 5
- TextH_X = p_x + 5
- TextV_Y = p_y - 40
- TextH_Y = p_y - 20
- elseif p_x >= 240 and p_y <= 263 then
- TextV_X = p_x - 85
- TextH_X = p_x - 85
- TextV_Y = p_y + 5
- TextH_Y = p_y + 25
- elseif p_x > 240 and p_y > 263 then
- TextV_X = p_x - 85
- TextH_X = p_x - 85
- TextV_Y = p_y - 40
- TextH_Y = p_y - 20
- end
- end
复制代码
4.2 视频播放任意形状
4.2.1 视频空间属性配置
- 视频控件配置:拖动选择视频控件,用途选择为播放视频。
- 底色或UI配置:由于此处使用的和上节AV输入为同一工程,此处也将视频的底色或UI配置为和AV输入一样。
注:set_color_key(Min_color,Max_color,Match)API接口函数只能在on_onit()初始化中进行配置,且整个工程只能配置一次。
用户可根据自己需求实现不同形状的视频播放窗口,利用上述API接口设置视频控件的颜色比较过滤来达到不同形状的视频显示窗口。
例如Demo UI中利用灰色作为底色画出的该形状的图形,通过set_color_key设置颜色过滤以达到的显示该特定形状的视频窗口。
注:此处的视频控件范围应大于需要显示的该特定形状的范围。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|