转帖:原贴地址忘了
代码被本人重新整理过
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版
(3)Microsoft Agent核心组建
(4)Microsoft Agent的精灵:吉尼(Genie)、么林(Merlin)、罗比(Robby)和皮蒂(Peedy)
(5)至少有一个英语的Text-to-Speech引擎(现在还找不到中文的)
(6)微软运行时发音API4.0a
(如果还要实现语音识别功能的话,还要有微软的语音识别引擎)
所有这些都可以在http://microsoft.com/msagent/downloads.htm下载。另外,必须要安装Office2000(Office97是不行的)。
三 实现方法
1.打开VS.Net,新建一个工程,不妨取名为CoolUI。图示如下:
2.创建用户界面。
选择菜单:工具->自定义工具箱,并选择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;(这就是我们要用到的精灵的对象)。
所有完整的代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using AgentObjects; //需要添加這個Using 否則下面會有問題
namespace WAC
{
public partial class Form1 : Form
{
private IAgentCtlCharacterEx Character;
public Form1()
{
InitializeComponent();
button2.Enabled = false;//先使下面的两个按钮无效
button3.Enabled = false;
button4.Enabled = false;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
//axAgent1.Characters.Load("Genie", (object)"GENIE.ACS");//导入吉尼这个精灵
//Character = axAgent1.Characters["Genie"];
axAgent1.Characters.Load("merlin", "merlin.acs"); //么林老人
//axAgent1.Characters.Load("merlin", Application.StartupPath +"\\merlin.acs"); //把merlin.acs拷贝到 当前目录下 然后用路径也可以
Character = axAgent1.Characters["merlin"];
//axAgent1.Characters.Load("Robby", "Robby.acs"); //
//Character = axAgent1.Characters["Robby"];
//axAgent1.Characters.Load("Peedy", "Peedy.acs"); //
//Character = axAgent1.Characters["Peedy"];
Character.LanguageID = 0x409;//把语言设置为英语,这里不能是中文
Character.Left = 800; //精灵显示的位置
Character.Top = 600; //精灵显示的位置
Character.Show(null);//显示精灵
int X = Screen.PrimaryScreen.Bounds.Width; //当前窗体的分辨率
int Y = Screen.PrimaryScreen.Bounds.Height; //当前窗体的分辨率
Character.MoveTo((short)(X-250), (short)(Y-200),3000); //移动到当前位置
button1.Enabled = false;//重新设置按钮的有效性
button2.Enabled = true;
button3.Enabled = true;
button4.Enabled = true;
}
private void button2_Click(object sender, EventArgs e)
{
if (textBox1.Text.Length == 0) //如果没有字符的话,就不读
return;
Character.Speak(textBox1.Text, null);//让精灵朗读文本
}
private void button3_Click(object sender, EventArgs e)
{
Character.Play("Wave");
Character.Play("Hide");//隐藏精灵
}
private void button4_Click(object sender, EventArgs e)
{
//Character.Play ("RestPose"); //复位
//Character.Play ("Acknowledge"); //点头
//Character.Play ("Surprised"); //惊讶
//Character.Play ("GestureUp"); //手势
//Character.Play ("Pleased"); //满足
//Character.Play ("Alert"); //警告
//Character.Play ("Announce"); //宣布
//Character.Play ("Blink"); //眨眼
//Character.Play ("Confused"); //困惑
//Character.Play ("Congratulate"); //恭喜1
//Character.Play ("Congratulate_2"); //恭喜2
//Character.Play ("Decline"); //拒绝
//Character.Play ("DoMagic1"); //变魔术1
//Character.Play ("DoMagic2"); //变魔术2
//Character.Play ("DontRecognize"); //没听清
//Character.Play ("Explain"); //说明
//Character.Play ("GetAttention"); //敲一下
//Character.Play ("GetAttentionContinued"); //不停敲
//Character.Play ("GetAttentionReturn"); //不敲了
//Character.Play ("Greet"); //问候
//Character.Play ("Hearing_1"); //听1
//Character.Play ("Hearing_2"); //听2
//Character.Play ("Hearing_3"); //听3
//Character.Play ("Hearing_4"); //听4
//Character.Play ("Idle1_1"); //1-1
//Character.Play ("Idle1_2"); //1-2
//Character.Play ("Idle1_3"); //1-3
//Character.Play ("Idle1_4"); //1-4
//Character.Play ("Idle2_1"); //2-1
//Character.Play ("Idle2_2"); //2-2
//Character.Play ("Idle3_1"); //3-1
//Character.Play ("Idle3_2"); //3-2
//Character.Play ("LookDown"); //俯视
//Character.Play ("LookDownBlink"); //俯视眨眼
//Character.Play ("LookDownReturn"); //俯视眨眼返回
Character.Play("MoveUp"); //上移
Character.Play("MoveDown"); //下移
Character.Play("MoveLeft"); //左移
Character.Play("MoveRight"); //右移
//Character.Play ("Process"); //熬汤
//Character.Play ("Processing"); //熬汤
//Character.Play ("Read"); //读
//Character.Play ("ReadReturn"); //不读了
//Character.Play ("Reading"); //正在读
//Character.Play ("ReadContinued"); //不停读
//Character.Play("Sad"); //悲哀
//Character.Play ("Search"); //查找
//Character.Play ("Searching"); //正在查找
Character.Play("StartListening"); //听
Character.Play("StopListening"); //捂耳朵
Character.Play("Suggest"); //暗示
Character.Play ("Uncertain"); //想飞
Character.Play ("Wave"); //挥手
Character.Play ("Write"); //写东西
Character.Play ("WriteContinued"); //不停写
Character.Play("WriteReturn"); //不写了
//Merlin.Stop() //停止
}
}
}
4.好了,现在完成了所有的工作了,安Ctrl+F5试试效果吧!