大彩串口屏m型av输入坐标显示和视频任意形状播放应用说明-米乐网页

演示视频


一、适合范围


文档仅适用于大彩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设置颜色过滤以达到的显示该特定形状的视频窗口。
注:此处的视频控件范围应大于需要显示的该特定形状的范围。



网站地图