注册 登录
编程论坛 VB6论坛

请教KSC歌词变色怎么做?

zdwlzcsm 发布于 2014-12-16 20:40, 613 次点击
想试着写一个KSC歌词播放器    请教各位大神  怎么能让歌词按时间
只有本站会员才能查看附件,请 登录
变颜色?
4 回复
#2
xzlxzlxzl2014-12-16 22:01
还真去下了好几个ksc歌词文件,格式一目了然:括号内数据,逗号间隔,分别为起时间、结束时间,歌词,每个字耗时(毫秒)。
这个用vb做应该问题不大(不做字的特效处理),我在前面提到的窗体透明可以用上,在同时对歌词同样大小不同字色字变色用api函数bitblt逐列按每个字耗时所对应的速度覆盖即可。
#3
lianyicq2014-12-17 09:28
版主晚上十点过了还在解答问题!
按版主意见可以实现,想来精确定时比较重要,分辨率达到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 编辑 ]
#4
zdwlzcsm2014-12-17 19:38
已通过QQ好友解决  谢谢各位
#5
xzlxzlxzl2014-12-18 21:24
回复 3楼 lianyicq
用timer控件达不到1ms精度。timer控件事件是18.2次/秒发生一次,大致精度是54毫秒,要达到1毫秒精度应使用api函数timegettime(好像有的系统也达不到1ms精度,我的台式机只能达到15ms的精度,但笔记本又行)。PaintPicture方法应该是使用api函数StretchBlt完成的,可以实现变形,我觉得比api函数bitblt执行速度慢。你的思路可行,但要模仿酷哥等专业播放器的卡拉OK效果还有差距,我是按那些软件思路想的,已做的差不多了。
1