分享

WPF中播放Flash动画

 牛人的尾巴 2016-06-06

WPF中播放Flash动画

(2012-01-24 16:33:38)
标签:

杂谈

    有的老师问:WPF能否播放Flash动画?可以。但是由于微软有点“自私”,WPF本身不直接支持播放Flash动画,需要做点“设计”,下面是示例(嵌入WPF窗口播放)。

    1、首先在VS2010中建立项目。打开VS2010后选择“文件”-“新建”-“项目”,选择“WPF应用程序”,如下图所示,项目名称为WpfFlashPlayer。

WPF中播放Flash动画

    2、选中项目解决方案名称,点右键,选择“添加”—“新建项目”,出现下图窗口。选择“Windows窗体控件库”,名称定为WindowsFormsFlashControlLibrary,点“确定”键。 

WPF中播放Flash动画

      3、在工具箱中选择Shockwave Flash Object,如果工具箱中没有出现,只要在工具箱中点右键选择“选择项”,就会出现图1-99,选择其中的“Shockwave Flash Object”后点“确定”键。这时工具箱中会增加Shockwave Flash Object控件,将其拖入设计窗口。

WPF中播放Flash动画

图1-99

    4、开始执行程序,在项目“WindowsFormsFlashControlLibrary”的“Bin\Debug”文件夹中自动生成:

    AxInterop.ShockwaveFlashObjects.dll和Interop.ShockwaveFlashObjects.dll

    这2个文件是Windows系统下Flash Player播放器控件在WPF中应用的接口,有了这两个文件,他人就无需做上面的重复设计了,可以在下面使用。

    5、然后在Expression Blend 4中建立1WPF项目,如WpfFlashPlayer。

    首先在项目的“引用”中添加下面2个文件的引用(可到上面说的文件夹中找此文件):

    AxInterop.ShockwaveFlashObjects.dll

    Interop.ShockwaveFlashObjects.dll

    并且在.xaml.cs文件前添加命名空间:

    using AxShockwaveFlashObjects;

    using ShockwaveFlashObjects;

    这时,项目中可以使用Flash Player的类AxShockwaveFlash创建播放器对象,此对象在WPF窗口的显示同样需要借助于接口控件WindowsFormsHost,这样需要在项目的“引用”中添加如下文件:

    System.Windows.Forms.dll(C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319)

    WindowsFormsIntegration.dll(C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\WPF)

    前1个引用的添加将保证AxShockwaveFlash的正常应用。后1个引用的添加,“资产”栏目中就出现WindowsFormsHost控件了。

    因为要播放视频,允许从当前磁盘中选择,需要使用打开文件对话框,后面的程序中使用到定时器,所以需要添加命名空间引用:

    using Microsoft.Win32;//for OpenFileDialog

    以上是设计的准备工作,已经完成,下面进行界面设计。

    从“资产”栏目中找到WindowsFormsHost控件,拖入MainWindow窗口,命名为wfh,调整其大小合适播放Flash动画。放入1个按钮“选择SWF文件”(button):

    //选择SWF文件(程序注解参照前面的“选择WMV文件”)

     private void button_Click(object sender, System.Windows.RoutedEventArgs e)

         {

            OpenFileDialog openfile = new OpenFileDialog();

            openfile.Filter = "选择SWF文件|*.swf";

            openfile.Title = "选择SWF文件";

            if (openfile.ShowDialog() == true)

            {

                if (openfile.FileName != "")

                {

                    FlashPlayer.Movie=openfile.FileName;                  

                }

            }

        }

     //Windows启动时播放指定的Flash动画

     private void Window_Loaded(object sender, System.Windows.RoutedEventArgs e)

         {

            // FlashPlayer作为wfh的子对象

            wfh.Child = FlashPlayer;

            //获取动画文件路径定位,System.Environment.CurrentDirectory指向项目的Debug文件

            string swff=System.Environment.CurrentDirectory+@"\shufa.swf";

            //作为播放器的播放文件

            FlashPlayer.Movie=swff;

            //窗口标题显示Flash Player的版本

            this.Window.Title="WPF中嵌入Flash Player:"+FlashPlayer.ProductVersion;

         }

    设计完成了,老师如果还有问题请发信到邮箱。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多