标题:请教KSC歌词变色怎么做?
只看楼主
zdwlzcsm
Rank: 2
等 级:论坛游民
帖 子:11
专家分:25
注 册:2014-11-17
结帖率:100%
已结贴  问题点数:20 回复次数:4 
请教KSC歌词变色怎么做?
想试着写一个KSC歌词播放器    请教各位大神  怎么能让歌词按时间
变颜色?
搜索更多相关主题的帖子: 播放器 
2014-12-16 20:40
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:7 
还真去下了好几个ksc歌词文件,格式一目了然:括号内数据,逗号间隔,分别为起时间、结束时间,歌词,每个字耗时(毫秒)。
这个用vb做应该问题不大(不做字的特效处理),我在前面提到的窗体透明可以用上,在同时对歌词同样大小不同字色字变色用api函数bitblt逐列按每个字耗时所对应的速度覆盖即可。
2014-12-16 22:01
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:735
专家分:3478
注 册:2013-1-26
得分:7 
版主晚上十点过了还在解答问题!
按版主意见可以实现,想来精确定时比较重要,分辨率达到1ms.实际效果不知怎样;另外变色可以不用API,比如底色为黑,字本色为白,用paintpicture的vbsrcand方法把1个象素宽的红色逐时画上去也能解决.
程序代码:
Dim i As Integer

Private Sub Form_Load()
Picture1.FontSize = 30
Picture1.ForeColor = vbBlack
Picture1.Print "歌词变色"
End Sub

Private Sub Timer1_Timer()' 根据每个字持续时间确定定时控件的interval
Picture1.PaintPicture Image1.Picture, i, 0, 1, 50, 0, 0, 1, 50, vbSrcAnd
If i < Picture1.Width Then i = i + 1 Else i = 0: Timer1.Enabled = False

End Sub


[ 本帖最后由 lianyicq 于 2014-12-17 09:31 编辑 ]

大开眼界
2014-12-17 09:28
zdwlzcsm
Rank: 2
等 级:论坛游民
帖 子:11
专家分:25
注 册:2014-11-17
得分:0 
已通过QQ好友解决  谢谢各位
2014-12-17 19:38
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
回复 3楼 lianyicq
用timer控件达不到1ms精度。timer控件事件是18.2次/秒发生一次,大致精度是54毫秒,要达到1毫秒精度应使用api函数timegettime(好像有的系统也达不到1ms精度,我的台式机只能达到15ms的精度,但笔记本又行)。PaintPicture方法应该是使用api函数StretchBlt完成的,可以实现变形,我觉得比api函数bitblt执行速度慢。你的思路可行,但要模仿酷哥等专业播放器的卡拉OK效果还有差距,我是按那些软件思路想的,已做的差不多了。
2014-12-18 21:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-440020-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.098188 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved