使用GdiTransparentBlt做图片透明效果时容易忽视的几个问题:
1、源场景和目标场景可以相同。
2、在作透明处理时,目标矩形与源矩形必须事先设置为相同大小。本人尝试结果:大小不同透明效果无法实现。
3、目标场景若为界面控件,背景颜色应与透明色不同,否则无法显示效果。
4、初学者尤其要注意该函数所用句柄为hdc,而并非hwd。
功能:执行颜色数据的一位块操作转换到一个像素矩形,从指定的源场景到目标设备场景中。
VB声明:Private Declare Function GdiTransparentBlt Lib "gdi32.dll" (ByVal hdc As Long,ByVal x As Long,ByVal y As Long,ByVal nWidth As Long,ByVal nHeight As Long,ByVal hSrcDC As Long,ByVal xSrc As Long,ByVal ySrc As Long,ByVal nSrcWidth As Long,ByVal nSrcHeight As Long,ByVal crTransparent As Long) As Boolean
返回值:成功,返回为TRUE;否则,返回FALSE.
参数:
hdcDest 目标设备场景句柄
nXOriginDest 指定目标矩形的左上角X坐标,使用逻辑单位。
nYOriginDest 指定目标矩形的左上角Y坐标,使用逻辑单位。
nWidthDest 指定目标矩形的宽度,使用逻辑单位。
hHeightDest指定目标矩形的高度,使用逻辑单位。
hdcSrc 源设备场景句柄。
nXOriginSrc 源矩形的左上角X坐标,使用逻辑单位。
nYOriginSrc 源矩形的左上角Y坐标,使用逻辑单位。
nWidthSrc 源矩形的宽度,使用逻辑单位。
nHeightSrc 源矩形的高度,使用逻辑单位。
crTransparent RGB值,源位图中做透明处理的颜色。
例句:
GdiTransparentBlt hBakgrdDC,ptForgSize.X,ptForgSize.Y,hFregrdDC,lngColorForeground