65.9K
CodeProject 正在变化。 阅读更多。
Home

C# 电影播放器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (49投票s)

2007年4月25日

CPOL

3分钟阅读

viewsIcon

430970

downloadIcon

29041

托管 DirectX 电影播放器。

Screenshot - zmovieplayer.jpg

引言

在我发现之前的电影播放器在 Vista 上出现故障后,我开始寻找基于托管 DirectX 的 C# 解决方案。

在使用原始 Vista 的所有尝试都失败了,直到我下载了 2007 年 4 月发布的最新 Microsoft DirectX 9L 版本,才解决了我在 Vista 上遇到的所有问题。

因此,为了在 Vista 上使用此代码(在 XP 下运行没有问题),您必须首先从此处下载最新的 DirectX SDK。

然后您就可以使用 Microsoft.DirectX.AudioVideoPlayback 程序集。

文档

一旦您安装了完整的 DirectX SDK,并且假设您使用默认设置安装了它,您可以在此文件夹中找到有关 AudioVideoPlayback 程序集的文档
C:\Program Files\Microsoft DirectX SDK (April 2007)\Documentation\DirectX9\directx9_m.chm.

使用播放器

zMoviePlayer 能够播放:AVI、MPG、MPEG、WMV、DivX、Xvid(假设您已首先安装正确的 CODEC)。

在“全屏”模式下,将鼠标移动到底部以显示/隐藏“命令面板”。

要选择电影,请使用菜单弹出通用对话框文件选择器,或者使用从资源管理器到 zMoviePlayer 窗体的拖放功能。

Using the Code

播放器的主要 DirectX 类名为 Video,它非常容易使用。
您可以从 Visual Studio 弹出上下文菜单(获取定义)获取有关它的所有详细信息。

因为我想要一个外观漂亮的界面“类似于 WMP 11”,所以我自己添加了一些类来执行播放器的皮肤美化。 它们是

  • SkinButton.cs - 用户控件,用于创建皮肤按钮,使用单个 5 图像位图来匹配每个按钮状态:正常、按下、禁用、聚焦、悬停。
    您可以使用“标准”按钮或带有区域的异形按钮。
  • SkinTrackbar.cs - 用户控件,用于创建仅鼠标的皮肤滑块。 指针滑块可以基于提供的位图具有任何大小或形状。 控件方向基于宽度和高度之间的比率,如果宽度大于高度,则为水平,否则为垂直。 为了帮助用户了解指针滑块的移动,控件使用不同的颜色来显示当前值。 您可以反转范围交换最小值/最大值。
  • SkinEngine.cs - 此类负责绘制皮肤控件。

关注点

为了消除在 Visual Studio 环境中运行时出现的“loaderlock”异常消息
使用“Ctrl + Alt + E”打开“异常”对话框,选择“托管调试助手”并取消选中Loaderlock”。

历史

于 05-22-2007 更新(版本 1.04)

  • 命令行支持(如果存在,也适用于将电影文件从资源管理器拖到播放器的桌面图标上)
  • 进程检测:参见 IsAlreadyRunning()
  • 图标模式检测,以恢复原始位置(使用命令行时)
  • 会话之间保存的音频级别
  • 新标签 ShowTime(在全屏模式下运行时查看当前时间)
  • 私有 WM_STRINGDATA 消息,用于播放新电影,使用命令行文件名

于 05-15-2007 更新(版本 1.03)

  • 此版本将最新使用的文件夹保存到注册表中,并在会话之间检索它,以简化电影选择(当所有电影都存储在专用子文件夹中,并按电影类型排序时非常方便)。
  • 高清电影(WMV 高清电影在 Vista 上不起作用)
  • 静音问题已修复(即使在 ON 时,播放新电影时也会忽略静音)

请参阅我的其他 C# 演示

http://www.zapsolution.com/winlift/ccorner.htm - 务必尝试“旋转木马”演示!

Patrice Terrier
www.zapsolution.com

© . All rights reserved.