wpf怎么实现卡拉OK效果?

hasagiiiii 2011-07-07 08:21:17
又没有人用wpf做过音乐播放器,要实现像酷狗,QQ音乐那样的歌词效果要怎么做呢?
是不是要新开一个窗口,里面放歌词呢?
如果用其他控件都无法单独显示在窗口外面。
另外要怎么实现音乐播放到那,歌词就同步到哪里,就是颜色不一样的那种效果。
有没有高手能指点一下?
...全文
227 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hasagiiiii 2011-07-08
  • 打赏
  • 举报
回复
先不结贴,看看有没有大虾有更好的办法
hasagiiiii 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 duanzilin 的回复:]

试试ActualWidth有没有值

好像Lable无法显示在所有windows窗体最上层的
[/Quote]
我知道错在哪了~
desiredSize的结果是正确的~谢谢你的耐心回答~
hasagiiiii 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 duanzilin 的回复:]

试试ActualWidth有没有值

好像Lable无法显示在所有windows窗体最上层的
[/Quote]
可以获取,但是全部是一样的~无论label里的字符是多少个。。。
而label.width获取的全是NaN,
label.desiredSize得到的结果更加不考谱,label为6个字符的时候获取的结果为10,8个的时候为360.
三个都不能用,看来还是得手动算,有没有方法直接通过字符的fontsize和字符数获取实际长度呢?
沝林 2011-07-08
  • 打赏
  • 举报
回复
试试ActualWidth有没有值

好像Lable无法显示在所有windows窗体最上层的
hasagiiiii 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 duanzilin 的回复:]

Popup应该可以显示在最外面的,不要让它自动关闭,编程控制它的显示和隐藏就可以了,而且它会一直在最上面,其他窗体也挡不住的

字的颜色与歌词的同步,我之前做了个类似的,我是用一段文字,用文字的颜色变化表示进度,歌词颜色变化也可以用这种方法,比如:一句歌词要唱5秒钟,用一个timer监视进度,同时要让字的颜色随进度改变,你需要2个显示层,其中上面一层是正常的字,下层一层是红色的字,2层字体可……
[/Quote]
我的想法也是这样,不过我用的是新窗口,然后用两个不同颜色的label,一个label的width随音乐的播放而增加,这样大概可以实现了这个功能,但是细节部分却有很多问题,比如timer,我把timer的间隔Interval设置为0.05,然后在tick事件里把一个代表时间currTime的变量+=0.05;这样currTime就可以代表已经播放了多长时间,但是实际上发现这个时间并不准确,我打开了一个计时器和程序里的currTime比较,发现过了1分钟后,程序里的currTime会比实际的计时器慢上1到2秒,我猜测timer在调用tick事件的时候会暂停计时,所以导致最终时间慢了一点,结果歌词的播放跟音乐的播放并不同步,后来用DateTime.Now - 开始播放的时间来获取音乐播放的时间,这样就比较准确。

还有一个问题就是,应该怎么获取Label的长度呢?我的想法是label的长度(就是当前句歌词的长度)/两句歌词间的时间间隔,获取label的width的增加速度,但是实际上发现获取不了label的width,不是NaN就是0,所以最终我用歌词长度 * fontsize来获取长度,结果还是导致音乐和歌词播放的速度不一致。

有没有大虾能指点一下~有没有比较好的解决办法
沝林 2011-07-07
  • 打赏
  • 举报
回复
Popup应该可以显示在最外面的,不要让它自动关闭,编程控制它的显示和隐藏就可以了,而且它会一直在最上面,其他窗体也挡不住的

字的颜色与歌词的同步,我之前做了个类似的,我是用一段文字,用文字的颜色变化表示进度,歌词颜色变化也可以用这种方法,比如:一句歌词要唱5秒钟,用一个timer监视进度,同时要让字的颜色随进度改变,你需要2个显示层,其中上面一层是正常的字,下层一层是红色的字,2层字体可以完全重合,开始是正常字体层覆盖红色字体层,随着播放开始,正常字体层的宽度随进度不断收缩,红色字体层不断显露出来,看起来就像字体在变一样

关于正常字体层的宽度收缩,可能需要用到旋转和平移等转换操作,因为控件的宽度默认是从右开始收缩的

8,756

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧