龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

放置“透明”的图片

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
在VB中,如果你试着把一只有鸟的图片放到背景的一棵树上,你就会发现树会被鸟遮住一个矩形的区域(即鸟的图片矩形)。我们可以通过以下方法使图片上非鸟的其它部分变透明:我们
在VB中,如果你试着把一只有鸟的图片放到背景的一棵树上,你就会发现树会被鸟遮住一个矩形的区域(即鸟的图片矩形)。我们可以通过以下方法使图片上非鸟的其它部分变透明:我们可以利用一个WinAPI函数BitBlt对图形进行一系列的位操作来达到此目的。
  函数声明:
  DeclareFunctionBitBltLib"gdi32"Alias"BitBlt"(ByValhDestDCAsLong,ByValxAsLong,ByValyAsLong,ByValnWidthAsLong,ByValnHeightAsLong,ByValhSrcDCAsLong,ByValxSrcAsLong,ByValySrcAsLong,ByValdwRopAsLong)AsLong
  参数解释:
  目标环境:hDestDC――目标设备环境;x――左上角;y――顶端;nWidth――宽;nHeight――高源环境:hSrcDC――源设备环境;xSrc――源左上角;ySrc――源顶端;dwRop――位处理操作,如vbSrcAnd;vbSrcAnd;vbSrcCopy;vbSrcErase;vbSrcInvert等
  (目标环境或源环境只能是Picture,Form或Printer对象。各单位为象素。)
  进行处理之前,我们需要对鸟的图片进行处理:先复制一份相同的图形,将其应该透明之处(鸟的背景)设置为黑色(设此图为sPic),再将另一图做以下处理:要复制的地方(鸟)设置为黑色,其余地方设置(鸟的背景)为白色(设此图为Mask)。设树的图形为名dPic。
  最后,请加入以下代码:
  R=BitBlt(dPic.hdc,0,0,sPic.Width,sPic.Height,Mask.hdc,0,0,vbScrCopy)
  R=BitBlt(dPic.hdc,0,0,sPic.Width,sPic.Height,sPic.hdc,0,0,vbScrInvert)
  后记:
  1、VB中的PaintPicture方法提供类似功能,但速度不及此方法;
  2、在此方法上稍微加入一些代码,就不难实现动画的显示。
  3、VB例子中的CallDlls就使用此方法。->

精彩图集

赞助商链接