//报错信息,我在Delphi7.0下边
[Error] USemiTransparent.pas(49): Missing operator or semicolon
[Error] USemiTransparent.pas(49): Statement expected, but expression of type 'Boolean' found
[Fatal Error] SemiTran.dpr(5): Could not compile used unit 'USemiTransparent.pas'
我们知道,在Delphi中生成一个新的窗口时,会生成一个长方形的窗口并盖住背景,为了实现半透明效果,首先就得实现“透明”的效果,为此,我们需要截获WM_ERASEBKGND消息,传递给Windows一个处理过的标志就可以了。这样,我们程序的背景使用的就是原来处于窗体之后的背景,我们所要做的就是在这个背景上再加上我们的图片就可以了。为此,需要调用Windows98系统msimg32.dll中提供的AlphaBlend函数,其原型为:AlphaBlend( HDC hdcDest,//目标设备场景句柄 int nXOriginDest, //指定目标矩形左上角的x坐标 int nYOriginDest,//指定目标矩形左上角的y坐标 int nWidthDest,//指定目标矩形宽度 int hHeightDest,//指定目标矩形高度 HDC hdcSrc, //源设备场景句柄 int nXOriginSrc,//指定源矩形左上角的x坐标 int nYOriginSrc,//指定源矩形左上角的y坐标 int nWidthSrc,//指定源矩形宽度 int nHeightSrc,//指定源矩形高度 BLENDFUNCTION blendFunction //设定AlphaBlend处理的参数);? 具体编程过程如下:以SemiTran为名建立新的工程,文件另存为uSemiTransparent.pas,将窗体重命名为frmSemiTransparent,接下来,给窗体添加一个计时器(命名为tmrShowBitmap)、一个Image控件(命名为imgSrc),设置imgSrc的Picture属性,调入图片文件备用。使用Image控件的好处是不用调用CreateCompatibleDC来建立源设备场景。以下是用DELPHI5.0实现的具体例程,在Win98环境中测试通过,你可以根据注释很快在你的计算机上进一步完善,如有纰漏,欢迎来信探讨,xpmao@163.net。