WPF SWF

转载 2011年01月11日 17:18:00

由于WPF 本身中不支持COM 组件同时也无法加载ActiveX 控件,所以需要借助WinForm 引用ActiveX 控件将Flash 加入其中。首先创建一个WPF 项目(WpfFlash),将Flash 文件(.swf)加入到项目中,并将Copy to Output Directory 设置为"Copy always"。

  在工程中新增一个Windows Forms Control Library 项目(FlashControlLibrary),利用该控件库加载Flash ActiveX。

  在FlashControlLibrary 项目工具栏(Toolbox)中点击鼠标 右键,选择"Choose Items..."。在COM Components 标签 中选择"Shockwave Flash Object",点击确定。

  此时在工具栏中已经可以看到刚添加的Shockwave Flash Object 控件了。将控件拖入设计窗口,调整好控件尺寸使其满足Flash 的尺寸大小,对FlashControlLibrary 项目进行编译,并生成DLL 文件

  返回WpfFlash 项目将上面编译的AxInterop.ShockwaveFlashObjects.dll 加入References,并添加System.Windows.Forms 和WindowsFormsIntegration,便于WinForm 程序在WPF 中交互使用。

  接下来将通过两种方式将Flash 文件加入到WPF,一种侧重于使用XAML 代码实现,另一种则使用C#。可按各自需要选择其一。XAML 方法

  打开MainWindow.xaml,加入命名空间xmlns:f="clr-namespace:AxShockwaveFlashObjects;assembly=AxInterop.ShockwaveFlashObjects"。在中加入WindowsFormsHost 用于调用WinForm 程序,并在其中添加AxShockwaveFlash 控件加载Flash 文件。

#div_code img { border: 0px none; }
< Window x:Class = " WpfFlash.MainWindow "
        xmlns
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation "
        xmlns:x
= " http://schemas.microsoft.com/winfx/2006/xaml "
        xmlns:f
= " clr-namespace:AxShockwaveFlashObjects;assembly=AxInterop.ShockwaveFlashObjects "
        Title
= " Crab Shooter " Height = " 540 " Width = " 655 " >
    
< Grid >
        
< WindowsFormsHost >
            
< f:AxShockwaveFlash x:Name = " flashShow " />
        
</ WindowsFormsHost >
    
</ Grid >
</ Window >

   打开MainWindow.xaml.cs 将Flash 文件加载到flashShow 控件。

#div_code img { border: 0px none; }
using System;
using System.Windows;

namespace WpfFlash
{
    
public partial class MainWindow : Window
    {
        
public MainWindow()
        {
            InitializeComponent();
            
string flashPath = Environment.CurrentDirectory;
            flashPath
+= @ " /game.swf " ;
            flashShow.Movie
= flashPath;
        }
    }
}

   C# 方法

  使用C# 实现相同的效果,首先将XAML 代码按如下方式修改,在Window 中加入Loaded 事件。

#div_code img { border: 0px none; }
< Window x:Class = " WpfFlash.MainWindow "
        xmlns
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation "
        xmlns:x
= " http://schemas.microsoft.com/winfx/2006/xaml "
        Title
= " Crab Shooter " Loaded = " FlashLoaded " Height = " 540 " Width = " 655 " >
    
< Grid x:Name = " mainGrid " />
</ Window >

   定义FlashLoaded 方法,主要通过WindowsFormsHost和 AxShockwaveFlash 完成Flash 加载操作。

#div_code img { border: 0px none; }
using System;
using System.Windows;
using System.Windows.Forms.Integration;
using AxShockwaveFlashObjects;

namespace WpfFlash
{
    
public partial class MainWindow : Window
    {
        
public MainWindow()
        {
            InitializeComponent();
        }

        
private void FlashLoaded( object sender, RoutedEventArgs e)
        {
            WindowsFormsHost formHost
= new WindowsFormsHost();

            AxShockwaveFlash axShockwaveFlash
= new AxShockwaveFlash();

            formHost.Child
= axShockwaveFlash;

            mainGrid.Children.Add(formHost);

            
string flashPath = Environment.CurrentDirectory;
            flashPath
+= @ " /game.swf " ;
            
            axShockwaveFlash.Movie
= flashPath;
        }
    }
}

  效果图

2

WPF内嵌Flash并交互

为WPF程序增加功能、图表、动画扩展Flash程序的功能使用现有的flash资源 在内嵌之前,需要考虑的有:     Macromedia官方不支持Flash ActiveX控件内嵌进wind...
  • xingxing513234072
  • xingxing513234072
  • 2013年05月13日 10:49
  • 3979

wpf 播放swf文件以及gif图片

  • 2017年09月18日 09:10
  • 74KB
  • 下载

WPF内嵌Flash并交互

为WPF程序增加功能、图表、动画扩展Flash程序的功能使用现有的flash资源 在内嵌之前,需要考虑的有:     Macromedia官方不支持Flash ActiveX控件内嵌进wind...
  • xingxing513234072
  • xingxing513234072
  • 2013年05月13日 10:49
  • 3979

swf文件解析(二) 文件分解及Tag获取

Extensibilit The format is a tagged format, so it can be evolved with new features while maintainin...
  • HundredBai
  • HundredBai
  • 2015年11月05日 21:29
  • 822

WPF中播放帧序列图

一般我们播放视频时是直接播放相应的视频文件,但有时候需要播放的素材并不是视频文件格式,而是对应的每一帧图片所组成的序列图,此时使用storyboard可以实现序列图的播放。...
  • openzpc
  • openzpc
  • 2015年08月16日 23:24
  • 1683

在PPT中插入并嵌入SWF文件图文教程

很多人都知道可以用控件法在PPT中插入SWF文件,但用过的人都知道,这种方法中SWF文件是以外部文件的形式存在,电脑运行是也是调用外部文件来播放。移动文件后,如果路径错误或忘记了携带外部文件,则无法正...
  • u011849402
  • u011849402
  • 2015年07月15日 16:32
  • 3369

android中webview播放swf格式的视频

package com.mibao.jytparent.all.views; import java.util.List; import com.mibao.jytparent.R; ...
  • zhanglipingzlp
  • zhanglipingzlp
  • 2014年08月29日 09:02
  • 1240

100首带swf格式的歌曲

歌曲如下(您可以直接点击即听,如果不行就先打开一个空白网页,把下面您想点的歌曲复制到地址栏,敲回车即可试欣赏!) http://60.191.9.194/swf/2005/20060308/5.sw...
  • victoryckl
  • victoryckl
  • 2013年06月04日 00:25
  • 821

另一种修改在线SWF的方法

这次公开的这种方式有一定的局限性,通过努力可以克服。它也有一定的优越性。与以前所用的内存搜索和局部修改不同,这种方式不仅可以局部修改,也可以完全重新编译而不受文件大小的限制。推而广之,这种方法可以替换...
  • zcsor
  • zcsor
  • 2017年02月24日 23:21
  • 952

火狐浏览器获取.swf文件

首先打开火狐浏览器的设置   然后点击附加组件 获取附加组件 搜索 NetVideoHunter,安装 安装完毕后,再次点开附加组件-->扩展-->Net...
  • dream_18
  • dream_18
  • 2016年07月16日 00:32
  • 1251
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF SWF
举报原因:
原因补充:

(最多只允许输入30个字)