主题:在窗体或图片框中绘制背景透明的图片
在编程过程中(尤其是游戏程序),通常需要在窗体或图片框中绘制背景透明的图片。虽然可以利用背景透明的GIF图片,但GIF格式往往会在位移中发生抖动。所以,需要一种更加有效的方法。
接着我就简单介绍一下,如何利用PaintPicture的光栅操作来实现图片背景透明。
但实施光栅操作,对图片是有一定要求的。需要一个底片和一个蒙板。
首先制作底片,底片就是在源图片的基础上把背景部分以纯黑色填充。而蒙板则相反,背景部分是纯白色,而前景图象则全部以黑色填充。完成以上操作后,使用VB绘图方法PaintPicture在图形容器(窗体或图片框)里绘制,利用vbScrAnd和vbScrPaint操作实现光栅逻辑运算。绘制出背景透明的图片。
我简单地举个例子来说明一下过程:
1。绘制一副图象(青蛙),背景(也就是需要透明的部分)必须是黑色。
2。为原图形创建蒙板,所谓的蒙板就是:原图形背景是黑色的地方全部变成白色,
而非黑色(青蛙)的部分在蒙板中要全部变成黑色。
3。把蒙板和表面(放置透明图形的图片,假设是一片荷叶)用PaintPicture方法执
行vbSrcAnd操作。
4。完成了步骤3之后,再把原图形和表面用API函数BitBlt执行vbSrcPaint操作。
5。最终的效果图就完成了,背景已经是透明的青蛙出现在了荷叶上了。这样就完成
了背景的透明。
注意:执行步骤3和4时要注意图形当前的X和Y坐标必须是一致的,这样才能有效地
遮照。关于PaintPicture方法请参考MSDN。
接着我就简单介绍一下,如何利用PaintPicture的光栅操作来实现图片背景透明。
但实施光栅操作,对图片是有一定要求的。需要一个底片和一个蒙板。
首先制作底片,底片就是在源图片的基础上把背景部分以纯黑色填充。而蒙板则相反,背景部分是纯白色,而前景图象则全部以黑色填充。完成以上操作后,使用VB绘图方法PaintPicture在图形容器(窗体或图片框)里绘制,利用vbScrAnd和vbScrPaint操作实现光栅逻辑运算。绘制出背景透明的图片。
我简单地举个例子来说明一下过程:
1。绘制一副图象(青蛙),背景(也就是需要透明的部分)必须是黑色。
2。为原图形创建蒙板,所谓的蒙板就是:原图形背景是黑色的地方全部变成白色,
而非黑色(青蛙)的部分在蒙板中要全部变成黑色。
3。把蒙板和表面(放置透明图形的图片,假设是一片荷叶)用PaintPicture方法执
行vbSrcAnd操作。
4。完成了步骤3之后,再把原图形和表面用API函数BitBlt执行vbSrcPaint操作。
5。最终的效果图就完成了,背景已经是透明的青蛙出现在了荷叶上了。这样就完成
了背景的透明。
注意:执行步骤3和4时要注意图形当前的X和Y坐标必须是一致的,这样才能有效地
遮照。关于PaintPicture方法请参考MSDN。