Windows Media Player 的评分星






3.67/5 (2投票s)
如何在 WMP 中创建星星来显示 UserRating 属性。
引言
这个小用户控件显示音乐文件的评分。进度条显示一个星,表示 20% 的评分,但是 AxWindowsMediaPlayer
控件的评分不同,而且不是很合乎逻辑。这就是我编写这个小用户控件的原因。
背景
当我尝试用进度条显示媒体文件的评分时,我得到了非常奇怪的结果。我在互联网上搜索,但没有真正找到解决方案。我找到的是 MSDN 上一篇关于 UserRating
属性如何工作的文章。我决定尝试编写一个小类,并在这里发布,以帮助遇到和我同样问题的人。
我只有 16 岁,有两年的编程经验,但从未在像 CodeProject 这样的网站上发布过我的代码。我从这个项目中学习了很多,但我希望我能从你们对代码的评论中学到更多 :-)
使用代码
首先,我必须考虑如何用正确的评分显示正确的星星。因为我不擅长 GDI,所以我创建了两个面板,每个面板包含五颗星星。经过大量的尝试、测试和思考,我得到了我想要的东西。
If track <= 12 Then
Panel1.Width = (track / 12) * _Star.Width
ElseIf track > 12 And track < 87 Then
Panel1.Width = _Star.Width + ((((track - 12) / 24)) * _Star.Width)
ElseIf track >= 87 Then
Panel1.Width = (_Star.Width * 4) + ((((track - 87) / 12)) * _Star.Width)
End If
track
是 UserRating
的值。我发现第一颗星的值为 12,中间的星为 24,最后一颗星再次为 12。因此,上面的系统会在正确的时刻显示具有正确评分的正确星星。如果不需要所有星星,它们只是被面板的宽度“截断”,用户会看到下方显示的灰色星星的第二个面板。
接下来,我创建了一个漂亮的鼠标悬停功能,您可以在 RateEnabled
属性中启用和禁用它。启用此属性后,当鼠标悬停在星星上时,星星会“发光”,并且单击即可设置评分。发生这种情况时,将触发自定义事件 OnRate
,并带有新的评分。您还可以使用其他图像来更改标准图像。
关注点
我以前从未创建过带有自定义事件的用户控件。我学到了一些新东西。这也是我对 Code Project 的第一次贡献,我希望它能被欣赏。欢迎评论,我总是可以学到更多。
历史
- 2009 年 3 月 13 日:首次发布。