WPF SWF

由于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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FluentUI WPF是一个用于Windows Presentation Foundation(WPF)的开源UI库,它提供了一套高质量的UI组件和样式,用于构建具有专业外观和用户体验的应用程序。Fluent UI的名称来源于Microsoft Fluent Design System,这是微软公司推出的新一代设计语言,旨在提供一致、现代和直观的用户体验。 Fluent UI WPF提供了以下主要功能和特点: 1. 丰富的UI组件:Fluent UI WPF提供了各种常用的UI组件,如按钮、文本框、标签、列表、网格、布局容器等,以及自定义控件和工具提示等。 2. 美观的视觉效果:Fluent UI WPF具有高度定制的样式和外观,提供了多种主题和视觉效果,可以满足不同风格和场景的需求。 3. 可扩展性:Fluent UI WPF提供了丰富的自定义选项,可以根据具体需求定制组件的外观和行为,以满足个性化的需求。 4. 良好的性能:Fluent UI WPF在设计时注重性能优化,能够高效地渲染和响应用户操作,同时支持高性能的数据绑定和布局管理。 5. 跨平台支持:Fluent UI WPF不仅适用于Windows平台,还支持其他平台(如MacOS和Linux)上的WPF应用程序开发。 要使用Fluent UI WPF,您需要了解WPF的基础知识和设计原则,并具备一定的C#编程经验。您可以使用NuGet包管理器将Fluent UI WPF组件集成到您的项目中,并按照文档和示例进行配置和使用。Fluent UI WPF的文档和示例资源可以在开源代码库中找到。 需要注意的是,Fluent UI WPF是一个开源库,但并非所有功能都完全免费。某些高级功能可能需要购买商业许可才能使用。因此,在决定使用Fluent UI WPF之前,请务必仔细阅读相关文档和许可协议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值