使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序(摘要)
来源:互联网 发布:南风捏脸数据御姐 编辑:程序博客网 时间:2024/05/29 15:42
(木野狐 2006-10-29)
由于之前一阵公司一个项目提出的需求,自己也想进行这方面的尝试,我对如何使用 Flash 来做 WinForm 程序的界面产生了兴趣,于是学习了一些资料,摘要于此。
下图是我做的一个 demo 程序的界面:
要在 WinForm 中使用 Flash,通常需要用到 Shockwave Flash Object 这个 COM 组件。
(http://www.codeproject.com/csharp/fscommand.asp)
(http://www.codeproject.com/useritems/FlashDBInteract.asp)
具体步骤如下:
首先添加对 COM 组件 Shockwave Flash Object 的引用,将该组件拖到窗体上之后,可以设置如下关键属性:
Movie: flash 的存放地址
EmbedMovie: 是否嵌入到程序的资源中。
接下来你可以设置其他一些属性,使得 Flash 的窗口最大化,隐藏掉其宿主程序的 C# WinForm 窗体。
在 Flash 的 ActionScript 中,可以通过 FSCommand 函数与 hosting app 通信,该函数有两个参数,分别是:
command: 命令名称
parameters: 参数
例子:
fscommand("Circule", "Green");
}
在 C# 中,处理 flash 对象的 FSCommand 事件即可。
如果该事件处理函数的 EventArgs 为 e, 则有如下对应关系:
e.command -> flash 中调用 FSCommand 时的 command 参数;
e.args -> flash 中调用 FSCommand 时的 arguments 参数。
在 C# 中往 Flash 传递数值用 SetVariable 方法:
对应的,有一个 GetVariable 方法可以获得 flash 中的变量值。
FSCommand 的参数只能传递一个,所以其功能存在一定的局限性。在你需要传递多个参数的时候,则需要在调用方用字符串拼接各个参数值,然后在被调用方重新解开。这种办法使得复杂的传值显得很丑陋。
不过,除了 FSCommand 外,我们还有另一种办法和 flash 通信,就是使用 Flash Player 8 External API.
(http://www.codeproject.com/cs/media/flashexternalapi.asp)
使用 External API,可以实现 ActionScript 和 C# 的双向调用。其好处就在于每次调用时的参数和返回值都通过一个 xml 文档来传递,这样就比 FSCommand 功能完善了很多。当然在 C# 中,我们也需要声明一下外部函数实现的对应关系。
代码片段:
Flash ActionScript 中声明提供给 hosting application 调用的回调函数:
ExternalInterface.addCallback("loadAndPlayVideo", null, loadAndPlayVideo);
C# 中调用 Flash 的情形:
" name=/"loadAndPlayVideo/" returntype=/"xml/">
<arguments><string>" + fileDialog.FileName +
"</string></arguments></invoke>");
在 ActionScript 中调用 C# 函数:
videoPlayer.metadata.width, videoPlayer.metadata.height);
在 C# 中声明被 Flash 调用的函数:
new _IShockwaveFlashEvents_FlashCallEventHandler(flashPlayer_FlashCall);
在此,我们可以看到 C# 和 Flash 进行通信还是相当方便的。
除此之外,我顺便搜索到其他一些和 flash 有关的不错的文章:
Flash and .NET with FlashRemoting
http://www.codeproject.com/aspnet/FlashRemoting.asp
Multiple File Upload With Progress Bar Using Flash and ASP.NET
http://www.codeproject.com/aspnet/FlashUpload.asp
Flash GUI for your exe using minimalistic approach (C++)
http://www.codeproject.com/useritems/FlashGui.asp
- 使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序(摘要)
- 使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序
- 使用Flash和C# WinForm配合打造界面漂亮的应用程序
- 使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序
- 打造自己的 C# WinForm 应用程序的 SQL Server 连接配置界面
- 创建漂亮的应用程序界面
- 漂亮的应用程序后台管理界面(系列一)
- C# WinForm应用程序创建启动界面
- Flash与C#结合,打造完美WinForm程序
- AS和C#通信,Flash和.net (winform)通信
- c#的WinForm界面布局
- c#的WinForm界面布局
- 打造支持apk下载和html5缓存的 IIS(配合一个超简单的android APP使用)详解
- C# WinForm 应用程序的 SQL Server 连接配置界面 动态库
- C# WinForm 应用程序的 SQL Server 连接配置界面 动态库
- WinForm中C#委托和事件的使用(回顾)
- 打造漂亮的tooltip
- C# 中的用户自定义控件和WPF的配合使用
- .NET Framework 3.0 和 Windows SDK
- IronPython 源码剖析系列(2):IronPython 引擎的运作流程
- IronPython for ASP.NET CTP WhitePaper 摘要翻译
- 关于 IE 模态对话框的两个问题
- Oracle数据库的三种验证机制
- 使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序(摘要)
- ASP.NET 点滴(二)
- 要注意 Visual Studio 2005 中的语言设置选项
- 电信的星空极速客户端软件强制安装策略升级了
- 明天去长春出差。。。
- IronPython 源码剖析系列(1):IronPython 编译器
- 产业链产生还需要很久
- Windows 系统右键菜单假死问题解决一例
- TreeViewVisitor: 一个快捷访问 TreeView 控件节点的帮助类