天天看點

一起談.NET技術,将Flash 嵌入WPF 程式XAML 方法C# 方法效果圖源代碼下載下傳

     由于WPF 本身中不支援COM 元件同時也無法加載ActiveX 控件,是以需要借助WinForm 引用ActiveX 控件将Flash 加入其中。首先建立一個WPF 項目(WpfFlash),将Flash 檔案(.swf)加入到項目中,并将Copy to Output Directory 設定為"Copy always"。

一起談.NET技術,将Flash 嵌入WPF 程式XAML 方法C# 方法效果圖源代碼下載下傳

     在工程中新增一個Windows Forms Control Library 項目(FlashControlLibrary),利用該控件庫加載Flash ActiveX。

一起談.NET技術,将Flash 嵌入WPF 程式XAML 方法C# 方法效果圖源代碼下載下傳
一起談.NET技術,将Flash 嵌入WPF 程式XAML 方法C# 方法效果圖源代碼下載下傳

     在FlashControlLibrary 項目工具欄(Toolbox)中點選滑鼠右鍵,選擇"Choose Items..."。在COM Components 标簽中選擇"Shockwave Flash Object",點選确定。

一起談.NET技術,将Flash 嵌入WPF 程式XAML 方法C# 方法效果圖源代碼下載下傳

     此時在工具欄中已經可以看到剛添加的Shockwave Flash Object 控件了。将控件拖入設計視窗,調整好控件尺寸使其滿足Flash 的尺寸大小,對FlashControlLibrary 項目進行編譯,并生成DLL 檔案。

一起談.NET技術,将Flash 嵌入WPF 程式XAML 方法C# 方法效果圖源代碼下載下傳
一起談.NET技術,将Flash 嵌入WPF 程式XAML 方法C# 方法效果圖源代碼下載下傳

     傳回WpfFlash 項目将上面編譯的AxInterop.ShockwaveFlashObjects.dll 加入References,并添加System.Windows.Forms 和WindowsFormsIntegration,便于WinForm 程式在WPF 中互動使用。

一起談.NET技術,将Flash 嵌入WPF 程式XAML 方法C# 方法效果圖源代碼下載下傳
一起談.NET技術,将Flash 嵌入WPF 程式XAML 方法C# 方法效果圖源代碼下載下傳

     接下來将通過兩種方式将Flash 檔案加入到WPF,一種側重于使用XAML 代碼實作,另一種則使用C#。可按各自需要選擇其一。

     打開MainWindow.xaml,加入命名空間xmlns:f="clr-namespace:AxShockwaveFlashObjects;assembly=AxInterop.ShockwaveFlashObjects"。在<Grid>中加入WindowsFormsHost 用于調用WinForm 程式,并在其中添加AxShockwaveFlash 控件加載Flash 檔案。

打開MainWindow.xaml.cs 将Flash 檔案加載到flashShow 控件。

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

定義FlashLoaded 方法,主要通過WindowsFormsHost和 AxShockwaveFlash 完成Flash 加載操作。

一起談.NET技術,将Flash 嵌入WPF 程式XAML 方法C# 方法效果圖源代碼下載下傳

<a href="http://cid-c75f4e27adfe5bbc.office.live.com/self.aspx/GnieTech/WpfFlash.zip">WpfFlash.zip</a>

繼續閱讀