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

相关文章推荐

c#播放flash

在项目引用选择添加引用com中选择"shockwave Flash " 后确定。在工具箱,windows窗体右键选择“选择项”,在选择工具箱中选中“com组件”页签,点击 浏览按钮,C盘system3...

WPF内嵌Flash并交互

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

在线阅读实现(文档-->swf的转换)

在线阅读技术整理(各类office文档-->swf的转换) 一:项目前资料准备(下载所需要的工具),这里我选择的实现方式是: Txt/Word/Excel/PPT=>PDF(OpenOffice+Jo...

把exe的flash还原成swf

首先要准备一个16进制字节码编辑器,这里用的是UltraEdit,可以到这里下载它最新的破解版。 现在我们开始我们的还原工作吧。 1.用UltraEdit打开待还原的exe文件。你就会看到这个ex...

SWF2入门(一)

文章源出处:http://www.ibm.com/developerworks/cn/education/java/j-spring-webflow/开始之前关于本教程本教程通过一个简化的购物车应用,...

html嵌入swf文件

在网页里面插入swf,再平常不过了,一般会想到如下代码:  Html代码   object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444...

swf转Word小技巧

最近好像很流行把Word、Excel、TXT文档转换成swf,目的是为了在线阅读这些文档更加方便,因为所有的浏览器都支持swf文件直接播放,这样就省去了很多麻烦。不过对于观看者来说,弊端也不小,swf...

第三步:FlexPaper呈现swf

之前做了前面的两步: 第一步:java开发_模仿百度文库_OpenOffice2PDF_源码下载 第二步:java开发_模仿百度文库_SWFTools_源码下载 现在是最后一步了,就...

绕开AS3安全沙箱,跨域加载SWF

AS3的安全沙箱的确是让人很无奈,本篇文章仅用于解决一个特定的问题,即A服务器上的SWF文件通过http访问B服务器上的SWF文件,此时即使B服务器上设置了crossdomain.xml,也无济于事,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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