特技我来做(上)——用VB实现“QQ”绚丽的魔法表情
编程魔方
前言:时下将软件人性化,成为众多程序员吸引用户的一种手段,比如最新QQ推出的“魔法表情”,就能将大家的表达变得更加生动,更加漂亮。但这样有趣的展示其实只要一点点创意,知道原理后要自己做一个是相当容易的事情。不信?好,今天我们就用VB亲手做一个。完整程序及相关代码下载地址:http://www.cpcw.com/49/game.rar。
一、绚丽的表情简单的原理
QQ的魔法表情看起来很绚丽,实现起来是不是很复杂呢?其实不然,用VB实现的方法很简单,就是利用WebBrowser控件来播放事先加入的Flash,同时把Flash的背景设为透明,这样就只剩下了Flash中的主角在屏幕当中展现它的魅力了。至于其中的Flash背景,则是把当前屏幕的固定区域截取下来作为网页的背景。原理是不是很简单呢,接下来就看看具体的制作过程吧。
二、一个表情后面的两个窗体
程序中有一个基本的软件操作界面,但为了给我们的魔法表情一个展示的舞台,其实还需要一个窗体,下面我们就来看看如何分别设置这两个窗体。
1.新建工程及添加窗体
首先,执行菜单“文件/新建工程(Ctrl+N)”,新建一个标准的EXE工程。此时程序自动建立一个窗体并命名为Form1,选择工程菜单(Alt+P),选添加窗体(F),弹出添加窗体窗口,新建一个窗体,将它的名称改为Form2。
2.添加控件并设置它们的属性(没有提到的属性均采用默认值)
首先在Form1窗体上绘制一个TextBox控件及一个CommandButton控件(如图1)。

其中Form1的Command1的Caption属性设为“魔法表情展示”。
接下来转到Form2窗体,点击“工程”菜单“部件”,将Microsoft Internet Controls选中,点确定。在其窗体上添加WebBrowser、Timer和Picture控件各一个(如图2)。

其中Form2的BorderStyle属性设为0。
三、窗体的代码
设置好了两个窗体后,自然要向其中添加代码来完成程序了。我们主要看看Form1里的代码:
Private Sub Form_Load()
'设置窗体的OLEDropMode属性为1 – Manual,然后在对象的OLEDragDrop事件程序中添加代码以获得要播放的Flash文件名。
Form1.OLEDropMode = 1
'用来设置当程序没打开的情况下进行的拖放操作时,将文件名字符串的"替换掉,方便后面的代码正常调用。
Text1.Text = Command$
Text1.Text = Replace(Text1.Text, """", "")
End Sub
Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Long
For i = 1 To Data.Files.Count
Text1.Text = Data.Files.Item(i)
Next
End Sub
Private Sub Command1_Click()
'当检测到Text1中没有文件名地址字符串时进行提示并中止。
If Text1.Text = "" Then
MsgBox "请先拖放一个Flash文件到软件界面上。"
Exit Sub
End If
'这段代码是正常的网页代码,用来实现访问flash文件,要求系统中安装了flash控件。
Dim Code
Code = "
"'设置这个网页的背景图片为程序执行时现截取的图片,这是关键步骤1。
Code = Code + "
"Code = Code + "
Code = Code + ""
Code = Code + ""
'设置这个Flash的背景为透明,这是关键步骤2。
Code = Code + ""
Code = Code + ""
Code = Code + ""
Code = Code + ""
Code = Code + ""
'将以上的Code中的$SWFURL用text1中的实际文件路径替换。
Code = Replace(Code, "$SWFURL", Text1.Text)
'将替换后的字符生成到程序所在的目录,文件名为MagicFlash.htm。
Open App.Path & "/MagicFlash.htm" For Output As #1
Print #1, Code ' 注释:建立文件,并写入网页代码。
Close #1
'以模式方式显示Form2窗体
Form2.Show vbModal
End Sub
Form2的具体代码请到http://www.cpcw.com/49/game.rar下载。
四、测试和小结
编制完程序后是不是急不可耐地想要看到程序运行的结果呢?这时你就可以按F5键查看代码运行的效果了,拖曳一个事先准备的透明背景的Flash文件到窗体上试验一下吧,怎么样?够酷吧!(如图3)。

以上代码只是教你一种最基本的方法,你可以融会贯通做出更棒的效果来并将它合理地加载在自己的程序中,也可以轻易地用其他语言来实现这样的效果。
注:本程序在WindowsXP+VB6.0下调试通过。