一种基于国产操作系统触屏笔记本的屏幕截屏方法
技术领域
本发明属于屏幕截屏
技术领域
,具体涉及一种基于国产操作系统触屏笔记本的屏幕截屏方法。背景技术
随着计算机技术和智能手机的迅速发展,基于Linux系统的国产操作系统迅速发展,越来越多的个人和企业开始大量使用Linux国产操作系统,各种应用程序的种类不断增加,智能手机几乎提供了和计算机同样的内容,利用计算机与智能手机进行录音、录像、视频播放、获取网络新闻、游戏、阅读电子书和提供娱乐游戏。程序功能不断发生变化,变的愈加多样和复杂。用户对截屏技术可以使人们根据自身的兴趣需要,将在屏幕上呈现的内容截取下来存储到预定的位置。比如使用者在线观看某个网络视频时,对该视频中的某个画面感兴趣,希望将其截取保存到本地。还比如,使用者在某个在线购物网站上寻找到有意向的商品,但并不打算马上购买,而希望将该商品的相关信息截取到本地保存。再比如使用者浏览某篇论文看到某种技术方案,但这种技术方案需要付费浏览并没有提供下载功能,这种现实需求催生了截屏技术在国产操作系统上的应用。
但是,现有技术中的截屏技术主要应用于非Linux系统,比如Windows上的QQ截屏、微信截屏以及智能手机上的各种截屏软件。近年来,基于Linux的国产操作系统虽然经过蓬勃发展,但在软件的易用性和数量上距离windows和智能手机还有较大差距,Linux的国产操作系统的截屏技术目前只有Printscreen按键全屏式截屏方式,操作不灵活,技术不完善。总之,在基于Linux的国产操作系统上并没有一种对计算机的屏幕内容进行截屏操作的较好方法。
发明内容
为解决上述问题,本发明提供了一种基于国产操作系统触屏笔记本的屏幕截屏方法,所述方法包括步骤:
获取截屏信号;
判断截屏信号类型;
按照所述截屏信号类型进行对应截屏操作。
优选地,所述按照所述截屏信号类型进行对应截屏操作包括步骤:
当捕获到全屏截屏信号时通过全屏Printscreen进行全屏截取。
优选地,所述按照所述截屏信号类型进行对应截屏操作包括步骤:
当捕获到Alt+a(A)信号时,判断鼠标是否被按下;
若是,进行区域截屏。
优选地,所述按照所述截屏信号类型进行对应截屏操作包括步骤:
当捕获到Alt+p(P)信号时,判断笔记本触摸屏幕是否被触摸;
若是,判断手指划过的区域是否为封闭屏幕区域;
若是,进行手指划过区域截屏;
若否,保持当前状态。
本发明提供了一种基于国产操作系统触屏笔记本的屏幕截屏方法,填补了国产操作系统平台和国外各Linux平台操作系统下截屏方式单一、截屏不灵活、分享方式不灵活等问题,还可移植到其他Linux发行版上;对于非触屏笔记本,实现矩形区域截屏,截屏图片编辑、标记功能的空白。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种基于国产操作系统触屏笔记本的屏幕截屏方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本申请中缩略语和关键术语定义如下:
触屏笔记本:笔记本电脑的触摸屏、笔记本上的触控板或电脑外接的手写板等具有触摸输入功能的装置,是人与计算机进行信息交互的重要通道。触控装置的功能和性能直接影响着终端产品的可靠性和用户体验,人们用触摸屏来代替鼠标或键盘工作时,用手指或其它物体触摸安装在显示器前端的触摸屏,操作系统会根据手指触摸的图标或菜单位置来定位选择信息输入。触摸屏由触摸检测部件和触摸屏控制器组成;触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置,获取触摸位置的横坐标和纵坐标,接受后送触摸屏控制器;而触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,将触点坐标封装为不通的数据结构,再送给操作系统和CPU。它同时能接收CPU发来的命令并加以执行。
截屏:也称为屏幕截取,截屏是一种截取图片或文字或视频的途径,也是一种计算机运用技术。截屏分手机截屏和电脑截屏,两种操作方法各不相同。通过这种技术可以从设备截取下自己感兴趣的文章图片供自己使用观看,可以帮助人们更好的去理解使用知识。是一种人人都能使用并且学会方法。可以通过一些软件实现截屏功能。
区域截屏:发送截屏信号(在国产操作系统上可以通过捕捉PrintScreen)按键事件,当操作系统捕获到按键事件,设置一个时间戳,用于判断全屏截取还是区域截取,在时间片内监听触屏笔记本屏幕按键DOWN事件,DOWN事件分为鼠标按下事件和手指按下事件,当监听到鼠标按下,操作系统获取到按下的横坐标和纵坐标(与周边区域)按下时间,如果是鼠标按下,监听MouseKeyDown事件(相比于手指按下,鼠标按下事件按下一般是一个点),鼠标移动事件,MousekeyUP事件,获取UP事件的坐标点,捕获MouseKeyDown和用户当前MousekeyUP之间的连线为对角线的矩形区域,作为当前截屏区域,并激活截屏操作界面封装到一个数据结构中。当监听到屏幕按下,在定时器时间片内,监控触控坐标移动位置,监听触屏笔记本屏幕按键UP事件的坐标在不在DOWN事件坐标范围内,如果触屏区域是个环形区域,则对屏幕进行区域截屏。否则则对屏幕进行全屏截屏,如果在时间片外,则视为无效区域截屏,默认进行全屏截屏。对全屏截屏区域,默认保存图片为用户设置的分辨率呈现的真实大小界面,不做处理,对截屏动作进行等比例缩率。对区域截屏操作用于对触屏笔记本屏幕内容的选定范围进行截取操作得到区域截图,不对截屏区域进行缩放处理。
如图1,在本申请实施例中,本发明提供了一种基于国产操作系统触屏笔记本的屏幕截屏方法,所述方法包括步骤:
S1:获取截屏信号;
S2:判断截屏信号类型;
S3:按照所述截屏信号类型进行对应截屏操作。
本发明提供了一种基于国产操作系统触屏笔记本的屏幕截屏方法,在国产操作系统上实现屏幕的截取,包括全屏、区域截取、不规则截取,并可移植到其余Linux系统平台,主要包括下来内容:(1)全屏截取(Printscreen);(2)区域截屏,鼠标拖动一个矩形区域,截取矩形区域内屏幕内容;(3)不规则区域对于触屏笔记本设备闭环截取;(4)在时间片内完成一个闭环区域后还可以多次闭环区域,如果两个闭环区域有坐标重叠的内容,可以视为一个新的环行区域,视为一个截屏内容;(5)在时间片内对应环形区域外的内容提供选项是保存区域外的图形还是区域内的图形,成为反方向截屏。
在本申请实施例中,所述按照所述截屏信号类型进行对应截屏操作包括步骤:
当捕获到全屏截屏信号时通过全屏Printscreen进行全屏截取。
在本申请实施例中,全屏截取用于截取整个计算机屏幕,当操作系统引导到桌面环境时,使用PrintScreen快捷键截取整个屏幕,此种方式几乎所有Linux操作系统发行版、Windows和各类只能手机都已默认有次功能,此处不做过多的描述。
在本申请实施例中,所述按照所述截屏信号类型进行对应截屏操作包括步骤:
当捕获到Alt+a(A)信号时,判断鼠标是否被按下;
若是,进行区域截屏。
在本申请实施例中,当操作系统获取到区域截屏信号时,通过发送区域截屏信号Alt+A,此时截屏守护进程捕获到此信号,在Linux系统下,工作区可以有四个,此时获取当前工作区,当前的窗口为活动窗口,获取当前显示显示设备的分辨率,设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,设备坐标的X轴向右为正,Y轴向下为正,坐标原点位于窗口的左上角,根据此显示设备,创建一个虚拟截屏面板,作为一个中间层,虚拟截屏面板映射为当前显示的设备的坐标,同时满足下面几点:
(1)屏幕坐标,包括整个屏幕,屏幕的左上角为(0,0);
(2)当前显示设备的分辨率的坐标最大值为显示设备的最大坐标,比如当前窗口的分辨率为1440x900,则屏幕右下角的坐标值为(1440,900);
(3)区域截屏的矩形原点,通过捕获鼠标DOWN的坐标,然后拖动一个矩形区域。获取鼠标UP时间的坐标,获得整个矩形区域。
Linux系统可以用X11和GTK提供Get_display_name或Get_Current_monitor等方法获取了一个显示设备,也可以指定全窗口坐标或屏幕坐标,鼠标的坐标可以通过(GdkEventMotion*)event,通过event.x,event.y可以获取横坐标和纵坐标的坐标值,内包括一个结构体获取鼠标按下坐标,通过Display获取显示设备,鼠标是否按下,获取窗口和显示设备,通过GdkPixbuf处理图形,封装结构体的伪代码如下:
截屏守护程序接受到区域截屏后,首先获取虚拟矩形区域,监听鼠标按下事件,获取鼠标点,封装Mouse_KeyDown,Mouse_KeyUP事件,Mouse_move事件,鼠标移动如下面结构体:
有了初始坐标和终点坐标,就可以获取到一个矩形区域,作为原始图形,进行边界处理、阴影、缩放等等运算,重写对话框,组件等功能,实现屏幕的区域截取。
在本申请实施例中,所述按照所述截屏信号类型进行对应截屏操作包括步骤:
当捕获到Alt+p(P)信号时,判断笔记本触摸屏幕是否被触摸;
若是,判断手指划过的区域是否为封闭屏幕区域;
若是,进行手指划过区域截屏;
若否,保持当前状态。
当接受到截屏指令Alt+p截屏信号,根据区域截屏的显示设备,创建另一个虚拟截屏面板,作为一个中间层,虚拟截屏面板映射为当前触屏笔记本显示的设备的坐标,touchListen负责整个触屏生命期内的消息循环,手指在屏幕上触摸的任意一个点,当前的屏幕都会捕获到触屏信号和触屏的开始时间,使用touchdown方法捕获,手指按下点设为第一个时间点,触点位置在当前显示设备坐标系里,并且对应着唯一确定的横坐标和纵坐标。操作系统就会精确判断到你点的位置,可以用一个结构体进行封装,结构体部分伪代码如下:
此时触点时间片激活,对触屏点数据进行封装,可存储到数组或链表中,实现、touchdispatch,monitortouch等方法,等手指离开屏幕时,获取触屏笔记本屏幕的UP信号,封装成touchmoveup事件,触屏笔记本所述指定的UP事件;记录为第二个时间点,将第二时间点与第一时间点的差值与预设的时间片进行比较,如果小于所述预设时间片且同时满足对坐标点进行遍历比较,存在坐标重合区域则获取不规则图形区域。
在此时间片内,如果已完成一个截屏区域,还可以重新开始按下另外的屏幕点,开始第二段区域的截屏。用户对触屏笔记本屏幕局部区域进行选定,将选定的区域作为第二个区域截屏的范围;时间片内当两个不规则区域存在坐标点重合时,则可视为一个截屏区域,不规则截屏获取多个子单元和界面处理子单元,作为一个整体,是上面单个不规则区域数据结构的封装。对所选区域反向选择,则可选中反向区域,实现反向截屏;所述界面获取子单元区域,用于获取触屏笔记本截屏区域的真实大小界面,所述真实大小界面为触屏笔记本屏幕能够呈现的最大物理屏幕;所述界面处理子单元,用于对所述真实大小界面进行缩小处理,将处理后的包含屏幕内容的缩小截图确定为最终的截图效果,此时还可对截屏的图形做更多的处理,如放弃本次截屏,标记截屏区域的某些内容,保存到本地,分享到社交网络等等。
与现有截屏技术相比,本实施例不仅可以在触屏笔记本上进行屏幕内容的截屏操作而得到截屏图,而且可以根据预先设置在不同截屏方式(全屏式截屏和区域式截屏)之间切换,使截屏操作更能满足用户各类需要,进而提高用户体验。
本发明提供了一种基于国产操作系统触屏笔记本的屏幕截屏方法,填补了国产操作系统平台和国外各Linux平台操作系统下截屏方式单一、截屏不灵活、分享方式不灵活等问题,还可移植到其他Linux发行版上;对于非触屏笔记本,实现矩形区域截屏,截屏图片编辑、标记功能的空白。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。