VB.Net:如何实现Aero玻璃界面?计算机技术 2010-02-26 10:51:39 阅读732 评论4 字号:大中小 订阅 Vista与Windows 7中的Aero界面是它们最吸引人的新功能之一,它可以实现大面积的透明界面。但是我们在编程中却不能完全利用这个功能。虽然VB.Net 2005以后的控件已经开始支持XP和Vista的风格了,但是窗体的界面却无法完全实现Aero的毛玻璃效果,只有最外面的一层窗口标题栏是透明的。网上确实有关于如何用.Net语言来实现这一效果的,但那是C#,而不是VB.Net。要VB.Net语言来实现?在网上找不到。难道为了这个功能非得去学C#才行吗?虽然网上有将C#代码转换为VB.Net代码,但它要求完整的代码结构,而网上提供的往往只是一段代码,并不是完整的一个Class,所以也难实现。本文将讲述如何用vb.net做这个界面。 Aero毛玻璃界面之所以无法在vb.net的IDE中直接使用,是因为它是Vista和Win7专有的功能,XP是不可能实现的。这个功能被放在了Vista和Win7的系统目录中的一个API库中,它就是DWMAPI.DLL.所以如果我们要做这种窗口,首先要调用这个API。
调用完了以后我们就可以在窗体加载的时候使用了。在Form_Load过程中输入这些:
好了,我们现在运行这个程序,看看是什么效果 ??这是怎么回事?为什么没有出现透明效果呢?难道这个函数是假的?
这样在设计界面时窗体不是黑的,但运行时窗体颜色会自动设置为黑色,这样就可以实现透明界面了。好了,我们启动程序,看看效果: 很好,这次的窗体就是全透明的了。但是我们设计程序不可能只有一个窗体,上面还得加一些Label等很多控件。好,我们在上面添加一个Label控件,文字内容为“Hello Aero”,字体设置为Segoe UI。 然后我们再运行程序,你会发现,为什么没有字呢?原因很简单,字是黑色的,也被当成透明颜色渲染了。实际上要想在这上面写黑色的字体还不容易,必须用graphics ”绘制”一段文本。 好,我们回到刚才的工程中,把Controlbox属性设为False,并把窗体的Text全去掉——自然,窗体就没有标题栏了,这时候窗体大小应该是300,300(vs窗体默认大小),如果不是请改成这个大小。 然后画一个300,200的Picturebox控件,backcolor设置为灰色(再设置一次,否则这个控件起不到作用)并对齐到窗体底部,然后把Locked属性设为TRUE,锁定这个控件。做这个控件的目的是盖住窗体中非透明的黑色区域,否则窗体会很难看。 在picturebox上画一个Button按钮,随便设置一些文字。 然后回到代码界面,在Form_load中要修改一些代码:
这样透明的区域被限定为顶部70像素,出来的界面就很像Vista里面的各种向导的窗口了。 然后双击Button1,进入代码界面,在Button1_Click事件中输入这些代码:
好了,我们现在运行这个程序,然后单击窗体里面的按钮,看看: 看,黑色的字体可以用graphics来绘制出来。如果你要在picturebox上写字用Label控件也是可以的。 到现在我们的Aero玻璃界面就算完成了。现在你就可以用这个功能来做一个Aero透明界面的程序了。不过你最好在窗口启动的时候检测一下系统版本是不是Vista以上的,因为XP是不能实现的。 至于那些坚守在VB6上的人来说,要实现这个界面是不可能的,就算你调用一大堆API来实现了Aero毛玻璃效果,其他控件的98风格会显得很雷人(虽然vb6有办法实现xp或Vista的界面,但是仅限于一些控件,连进度条都不好使),所以根据时代的变化,还是换到VB.Net平台上吧,其实如果会vb6的话转移到vb.net是不难的,语法跟vb6差不多,有些不一样的东西动用一下搜索引擎就可以了,它的IDE比vb6实在是好用多了。别忘了,现在是2010年,vb6是Windows 98的产物啊……Windows 7开始,Microsoft已经缩减对vb6程序的支持了,Common Dialog控件已经不好使了。据说Windows 8的时候会完全取消对VB6的支持。 |
|