
无需加好友免费技术支持
我们一般刷戏剧表演,播放视频,手机看直播能够看见弹幕,记得爰情公寓有一集是弹幕互动剧以前,我一般看哔哩哔哩学什么新东西还喜欢开启弹幕,不明白能够看见弹幕找寻念头,了解也都可以找到别人的看法。近期方案开发什么?QT部件,恰巧视频中见到弹幕,因此心血来潮想要QT在研发弹幕部件以前,我觉得它很强。我发现了它不复杂,全过程也很成功。一起来看看实现效果:
文本弹幕:
图片弹幕:(ps 拍摄的gif看起来有点儿卡屏,实际上很稳...)
最先,弹幕有文本弹幕和图片弹幕,因此怎样展现文字图片就是我们要解决的第一个问题,因此QT哪一个控制能够表明文本和图片,因此我想到QLabel,因此我订了一个BulletScreen类承继自QLabel。
在克服了媒介问题时,大家应该考虑弹幕的属性必须表明。自然,图片弹幕是一张图片。我们不会说这些。文本弹幕呢?然后我就想起我遇到的一些弹幕设计风格,归纳了下列传统风格:
自然,这并非所有的属性,而是一个弹幕的最基本属性我们首先完成基本上属性。当我想逐渐完成每一个属性的设置按钮时,我发现了QLabel设定文本颜色、字体样式和文本大小的小函数公式已实现,因此我们如今只需完成弹幕大小移速。有小伙伴要说,QLabel也有设定大小的小函数公式,的,QLabel有设定大小的小函数公式,但外挂字幕长度、字体样式和尺寸很有可能不一样,所以没办法明确适宜的尺寸,也无法统一设定大规格,这也太不合规了。那我们怎么根据弹幕中的句子来决定文本大小呢?
不必担心,QT还给我们创造了车轱辘,QFontMetrics类能够满足我们自己的要求,QFontMetrics还可以在体系中键入一个QFont依据该主要参数和文本具体内容,能够轻松得到该段文本的尺寸和总宽。实际使用方法如下所示:
也有最后一个移速。毕竟是移速,我必须要先挪动,因此我想到QT中的影片类
QPropertyAnimation,这类能够很好地完成弹幕的横向移动动漫,实际使用方法如下所示:
依据上边的编码,大家可以看到动漫能设持续时长,但是我们的移速难以实现,能用动画持续时长来替代,在移动同样间距前提下,动漫延续时间越少,速率越来越快,动漫不断时间越久,速率变慢。
弹幕能够挪动后,我们自己的弹幕应当挪动到哪?在检查了多个视频的网站弹幕后,我们不难发现大部分弹幕也是从显示屏右边移到显示屏左边的,因此我们就这样进行了。
如何做到?我也不知道显示器的尺寸!要用尺子量吗?
不用不用,QT它也帮我们完成了获得屏幕大小的函数公式:
在我进行弹幕编号时,我想试着实际效果,随后我想建立100个弹幕刷波,赞美自己,但是我不可以设定同样的文本、颜色、尺寸、移速和起始部位,100和一个有什么不同,重合在一起。因此我想自动生成这种属性,只要我们必须采用随机数字,QT使用方法如下所示:
对于怎样形成任意文本、颜色、尺寸、移速和起始部位,我是不会一一列举。大家可以立即查询最后源码。
实际上,完成文本弹幕,随后完成图片弹幕比较简单,只需要将QLabel用图片或动态图替代汉语,QLabel如下所示:
操作方法: