在C#下用Microsoft Agent创建超酷语言精灵(附图)

本文介绍如何利用C#结合Microsoft Agent库创建一个具有语音朗读功能的酷炫用户界面,类似Office2000的办公助手。通过加载精灵角色,如Genie、Merlin等,实现文本朗读、精灵动作和语音识别等功能,展示了C#在Windows应用开发中的便捷性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转帖:原贴地址忘了

代码被本人重新整理过

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
3Microsoft Agent核心组建
4Microsoft Agent的精灵:吉尼(Genie)、么林(Merlin)、罗比(Robby)和皮蒂(Peedy
5)至少有一个英语的Text-to-Speech引擎(现在还找不到中文的)
6)微软运行时发音API4.0a
(如果还要实现语音识别功能的话,还要有微软的语音识别引擎)
所有这些都可以在http://microsoft.com/msagent/downloads.htm下载。另外,必须要安装Office2000Office97是不行的)。

实现方法
1
.打开VS.Net,新建一个工程,不妨取名为CoolUI。图示如下:

2
.创建用户界面。
选择菜单:工具->自定义工具箱,并选择Microsoft Agent Control 2.0组件,图示

Microsoft Agent Control控件添加到窗体上(在程序运行时是看不到窗体是的Microsoft Agent控件的,只有在设计界面时它才显示出来),并课设计窗体如下:

将主窗体的Text属性设置为“CoolUI”;将左边三个按钮的Text属性分别设置为导入精灵朗读文本隐藏精灵;将textBoxText属性设置为“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
.好了,现在完成了所有的工作了,安CtrlF5试试效果吧!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值