图片透明效果制作揭秘

Author: 赵玉勇 杨桂梅 Date: 2001年 47期

?牐犖颐窃赩B中处理图片时总希望我们的图片能更完美一些,更加符合我们的需要。图片无非是现实生活中实际物体的反映,可这种完美在有些时候却大打折扣。因为像我们使用的方方正正的屏幕那样,我们使用的图片也必须是方方正正的,怎样将多余的东东去除呢?只保留我们需用的,这完全可办到,在VB中可通过三种办法来实现。
  #1?牐牭咨髡?
  ?牐犖颐强山计系耐枷癖尘吧柚贸梢恢趾痛疤灞尘吧˙ackColor)一模一样的颜色,通过Picture或Image控件,将我们的图片放在控件上,控件的边线(BorderStyle)和外表3D模式(Appearance)均去除,一切OK,不过此法在控件较多的情况下仍然很笨拙。如果图片很少,利用此法可谓简单实用之极(如^47020504a^所示)。当然图片事先是通过画图或其他更好的图像处理软件处理过的。
  #1?牐燗PI函数法
  ?牐?1.程序界面
  ?牐牻缑嬷杏玫揭桓鯢orm窗体,窗体中用到一个PictureBox图像框用来作为存放源图像的窗口,一个命令按钮CommandButton,其中picture1的Visuable属性设为TrueAutoredraw也设为True。原始图片需经过一定的处理,我们需用的图像保留,应该透明的部分设置成为白色。因为我们利用白色所具有的特性实现了透明效果,对白色和其他颜色施行AND(与)操作后,将保留原有的颜色。
  ?牐?2.BitBlt函数
  ?牐燘itBlt()函数可以将一幅图从一个设备场景复制到另一设备场景。它执行颜色数据的位传送,从指定的源设备向目标设备传送对应于一个像素矩形的颜色数据。
  ?牐犉渖餍问饺缦拢?可从API阅览器中通过加载win32api.txt后从声明中得到):
  ?牐燩rivate Declare Function BitBlt Lib “gdi32”(ByVal hDestDC 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 dwRop As Long) As Long
  ?牐牶懈鞑问迦缦拢?
  ?牐爃DestDC:目标设备
  ?牐爔和y:指定目标矩形的左上角
  ?牐爊Width和nHeight:目标矩形的宽度和高度
  ?牐爃SrcDC:源设备
  ?牐爔Src和ySrc:指定源矩形左上角坐标
  ?牐燿wRop:传输过程中要执行的光栅运算,定义了为了获得最终的颜色,怎样将源矩形的颜色数据和目标矩形的颜色数据相结合(我们本题中用到的常数意义是:SRCAND──用AND操作符将源矩形颜色与目标矩形的颜色相结合)。
  ?牐?3.源程序
  ?牐燩rivate Sub CmdTrans_Click() '透明效果
  ?牐爃DC1 = Me.Picture1.hDC
  ?牐爃dc3 = Me.hDC
  ?牐燙all BitBlt(hdc3, 0, 0, w, h, hDC1, 0, 0, SRCAND)??
  ?牐燛nd Sub
  ?牐燩rivate Sub Form_Load()
  ?牐燤e.ScaleMode = 3
  ?牐燤e.Picture1.ScaleMode = 3 '转换输出格式为像素
  ?牐爓 = Me.Picture1.ScaleWidth
  ?牐爃 = Me.Picture1.ScaleHeight
  ?牐燛nd Sub
  #1?牐犠灾瓶丶?
  ?牐?1.选择“文件”,“新建工程”中的“ActiveX控件”,进入自制控件窗体。将MaskPicture属性按上面的说明设好,Backstyle设置为透明,Maskcolor设置为纯黑色,一定要用纯黑。如果我们直接生成控件还不行,必须先将控件的属性进行调整,在其中添加上可对图片进行控制的Picture属性。
  ?牐?2.给控件添加属性并设置映射。选择“外接程序”中的“外接程序管理器”,选择列表中的VB 6ActiveX控件接口向导,并将下面加载行为的“加载/卸载”选中,选择确定。
  ?牐犞匦麓蚩巴饨映绦颉辈说ィ衷诓说ブ卸嗔烁鲅≡裣睢癆ctiveX接口向导”,将它选中。这里面有两项工作要做,一是调整自建控件的属性,将Picture属性加入其中,再者是将控件所有的属性设置元素映射,以使各控件能用。
  ?牐?3.上面的设置完成后,可通过“文件”菜单中的生成XXX.ocx菜单生成我们所需控件。记住该控件的路径和名称。
  ?牐?4.将控件加入到我们的窗体中,在工具箱上按右键选择部件,将出现部件对话框,通过其中的“控件”项目中的浏览,找到该控件的名称,可将我们自建的控件加入其中。我们将自制控件拖到窗体上,将其Picture属性设置为笔记本电脑图片的原图(底纹是红色的),图片将其红色部分变为透明。
  ?牐犐鲜龇椒ㄊ迪制鹄唇衔榉常攵砸环计坏ǔ桑煞锤词褂谩?
  ?牐犐厦媸侨质迪滞计该鞯姆椒ǎ谝恢肿罴虻ィ榭錾愿丛邮比春苣雅缮嫌贸。罅街质迪制鹄瓷陨愿丛樱锤饔星?秋,有兴趣的朋友不妨试试。