您的位置:首页   >  关于我们  >  新闻动态

大彩串口屏M型AV输入坐标显示和视频任意形状播放应用说明

发布人:大彩科技发布日期:2021-03-09


演示视频

一、适用范围


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