|
 |
推荐文章 |
|
|
|
|
|
|
|
|
|
|
在C#下用Microsoft Agent创建超酷语言精灵 |
| 作者:王凯明 日期:2005-8-8 10:06:36 |
|
|
| C#作为Microsoft .Net战略下的新兴语言,有其不可比拟的强大功能。作为一种RAD语言,它有Visual Basic快速开发应用程序的优点,又不乏C++语言的面相对象的优良特性。 |
|
本文就通过介绍利用Microsoft Agent来创建一个超酷用户界面(就像Office2000那种办公助手的界面,并有语音朗读功能)来向大家展示一下用C#进行Windows应用程序快速开发的优点。 |
|
微软的Office2000中用到了一些被称为“办公助手”(Office Assistance)的精灵来给用户提供帮助,这样做的效果是显而易见的,大家可以得到很有效的帮助并且使用户界面显得非常友好。现在,我们只要使用Microsoft Agent(基于COM),我们就可以在自己的程序中使用这种精灵来给程序增光添彩。用这种精灵,我们可以实现语音的朗读、表演动画甚至还可以实现语音识别呢! |
|
(1)微软公司视窗2000服务器版或视窗 XP 版 |
|
(2).Net FrameWrok SDK Beta 2版 |
|
(4)Microsoft Agent的精灵:吉尼(Genie)、么林(Merlin)、罗比(Robby)和皮蒂(Peedy) |
|
(5)至少有一个英语的Text-to-Speech引擎(现在还找不到中文的) |
|
(如果还要实现语音识别功能的话,还要有微软的语音识别引擎) |
|
所有这些都可以在http://microsoft.com/msagent/downloads.htm下载。另外,必须要安装Office2000(Office97是不行的)。 |
|
1.打开VS.Net,新建一个工程,不妨取名为CoolUI。图示如下: |
|
选择菜单:工具->自定义工具箱,并选择Microsoft Agent Control 2.0组件,图示: |
| 将Microsoft Agent Control控件添加到窗体上(在程序运行时是看不到窗体是的Microsoft
Agent控件的,只有在设计界面时它才显示出来),并课设计窗体如下: |
|
|
|
将主窗体的Text属性设置为“CoolUI”;将左边三个按钮的Text属性分别设置为“导入精灵”、“朗读文本”、“隐藏精灵”;将textBox的Text属性设置为“Type anything here for the character to read for you!(Only English)”,Multiline属性设置为True。 |
|
3.简单的用户界面已经完成,现在我们来进行代码部分的工作: |
|
首先,添加using AgentObjects;到代码的开始处。其次,在我们的类里添加私有数据成员:private IAgentCtlCharacterEx Character;(这就是我们要用到的精灵的对象)。修改构造函数如下: |
|
// Required for Windows Form Designer support |
|
button2.Enabled=false;//先使下面的两个按钮无效 |
|
// TODO: Add any constructor code after InitializeComponent call |
|
private void button1_Click(object sender, System.EventArgs e) |
|
private void button2_Click(object sender, System.EventArgs e) |
|
private void button3_Click(object sender, System.EventArgs e) |
|
private void button1_Click(object sender, System.EventArgs e) |
|
axAgent1.Characters.Load("Genie", (object)"GENIE.ACS");//导入吉尼这个精灵 |
|
Character = axAgent1.Characters["Genie"]; |
|
Character.LanguageID = 0x409;//把语言设置为英语,这里不能是中文 |
|
Character.Show(null);//显示精灵 |
|
button1.Enabled=false;//重新设置按钮的有效性 |
|
private void button2_Click(object sender, System.EventArgs e) |
|
if(textBox1.Text.Length == 0) //如果没有字符的话,就不读 |
|
Character.Speak(textBox1.Text, null);//让精灵朗读文本 |
|
private void button3_Click(object sender, System.EventArgs e) |
|
Character.Play("Hide");//隐藏精灵 |
|
using System.Collections; |
|
using System.ComponentModel; |
|
using System.Windows.Forms; |
|
/// Summary description for Form1. |
|
public class Form1 : System.Windows.Forms.Form |
|
private AxAgentObjects.AxAgent axAgent1; |
|
private IAgentCtlCharacterEx Character; |
|
private System.Windows.Forms.TextBox textBox1; |
|
private System.Windows.Forms.Button button1; |
|
private System.Windows.Forms.Button button2; |
|
private System.Windows.Forms.Button button3; |
|
/// Required designer variable. |
|
private System.ComponentModel.Container components = null; |
|
// Required for Windows Form Designer support |
|
button2.Enabled=false;//先使下面的两个按钮无效 |
|
// TODO: Add any constructor code after InitializeComponent call |
|
/// Clean up any resources being used. |
|
protected override void Dispose( bool disposing ) |
|
base.Dispose( disposing ); |
|
#region Windows Form Designer generated code |
|
/// Required method for Designer support - do not modify |
|
/// the contents of this method with the code editor. |
|
private void InitializeComponent() |
|
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1)); |
|
this.textBox1 = new System.Windows.Forms.TextBox(); |
|
this.button1 = new System.Windows.Forms.Button(); |
|
this.button2 = new System.Windows.Forms.Button(); |
|
this.button3 = new System.Windows.Forms.Button(); |
|
this.axAgent1 = new AxAgentObjects.AxAgent(); |
|
((System.ComponentModel.ISupportInitialize)(this.axAgent1)).BeginInit(); |
|
this.textBox1.Location = new System.Drawing.Point(112, 24); |
|
this.textBox1.Multiline = true; |
|
this.textBox1.Name = "textBox1"; |
|
this.textBox1.Size = new System.Drawing.Size(224, 152); |
|
this.textBox1.TabIndex = 2; |
|
this.textBox1.Text = "Type anything here for the character to read for you!(Only English)"; |
|
this.button1.Location = new System.Drawing.Point(16, 24); |
|
this.button1.Name = "button1"; |
|
this.button1.TabIndex = 1; |
|
this.button1.Text = "导入精灵"; |
|
this.button1.Click += new System.EventHandler(this.button1_Click); |
|
this.button2.Location = new System.Drawing.Point(16, 80); |
|
this.button2.Name = "button2"; |
|
this.button2.TabIndex = 1; |
|
this.button2.Text = "朗读文本"; |
|
this.button2.Click += new System.EventHandler(this.button2_Click); |
|
this.button3.Location = new System.Drawing.Point(16, 136); |
|
this.button3.Name = "button3"; |
|
this.button3.TabIndex = 1; |
|
this.button3.Text = "隐藏精灵"; |
|
this.button3.Click += new System.EventHandler(this.button3_Click); |
|
this.axAgent1.Enabled = true; |
|
this.axAgent1.Location = new System.Drawing.Point(320, 176); |
|
this.axAgent1.Name = "axAgent1"; |
|
this.axAgent1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAgent1.OcxState"))); |
|
this.axAgent1.Size = new System.Drawing.Size(32, 32); |
|
this.axAgent1.TabIndex = 0; |
|
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); |
|
this.ClientSize = new System.Drawing.Size(360, 213); |
|
this.Controls.AddRange(new System.Windows.Forms.Control[] { |
|
((System.ComponentModel.ISupportInitialize)(this.axAgent1)).EndInit(); |
|
this.ResumeLayout(false); |
|
/// The main entry point for the application. |
|
Application.Run(new Form1()); |
|
private void button1_Click(object sender, System.EventArgs e) |
|
axAgent1.Characters.Load("Genie", (object)"GENIE.ACS");//导入吉尼这个精灵 |
|
Character = axAgent1.Characters["Genie"]; |
|
Character.LanguageID = 0x409;//把语言设置为英语,这里不能是中文 |
|
Character.Show(null);//显示精灵 |
|
button1.Enabled=false;//重新设置按钮的有效性 |
|
private void button2_Click(object sender, System.EventArgs e) |
|
if(textBox1.Text.Length == 0) //如果没有字符的话,就不读 |
|
Character.Speak(textBox1.Text, null);//让精灵朗读文本 |
|
private void button3_Click(object sender, System.EventArgs e) |
|
Character.Play("Hide");//隐藏精灵 |
|
4.好了,现在完成了所有的工作了,安Ctrl+F5试试效果吧! |
|
从以上的例子,我们可以发现用C#做Windows平台下的开发是相当迅速而有效的。其实上面的例子还可以大大扩充,使之实现像电子小说阅读、英文听力测试、英文单词学习等功能,读者不妨一试。 |
|
|
|
|
|
|
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
|
|
|
|
|
责任编辑: 原点 |
投稿作者: 王凯明 |
|
|
信息来源: 网络 |
录入时间: 2005-8-8 10:06:36 |
|
|
|
| |
|