回 帖 发 新 帖 刷新版面

主题:在窗体或图片框中绘制背景透明的图片

    在编程过程中(尤其是游戏程序),通常需要在窗体或图片框中绘制背景透明的图片。虽然可以利用背景透明的GIF图片,但GIF格式往往会在位移中发生抖动。所以,需要一种更加有效的方法。
    接着我就简单介绍一下,如何利用PaintPicture的光栅操作来实现图片背景透明。
但实施光栅操作,对图片是有一定要求的。需要一个底片和一个蒙板。
    首先制作底片,底片就是在源图片的基础上把背景部分以纯黑色填充。而蒙板则相反,背景部分是纯白色,而前景图象则全部以黑色填充。完成以上操作后,使用VB绘图方法PaintPicture在图形容器(窗体或图片框)里绘制,利用vbScrAnd和vbScrPaint操作实现光栅逻辑运算。绘制出背景透明的图片。

    我简单地举个例子来说明一下过程:
    1。绘制一副图象(青蛙),背景(也就是需要透明的部分)必须是黑色。   
    2。为原图形创建蒙板,所谓的蒙板就是:原图形背景是黑色的地方全部变成白色,
       而非黑色(青蛙)的部分在蒙板中要全部变成黑色。
    3。把蒙板和表面(放置透明图形的图片,假设是一片荷叶)用PaintPicture方法执
       行vbSrcAnd操作。
    4。完成了步骤3之后,再把原图形和表面用API函数BitBlt执行vbSrcPaint操作。
    5。最终的效果图就完成了,背景已经是透明的青蛙出现在了荷叶上了。这样就完成
       了背景的透明。
    
    注意:执行步骤3和4时要注意图形当前的X和Y坐标必须是一致的,这样才能有效地
          遮照。关于PaintPicture方法请参考MSDN。

回复列表 (共6个回复)

沙发

谢拉

板凳

请说的具体点函数怎么使用.谢了

3 楼

我不是这个意思,我的图片可以直接做成透明,但是放到图片框里后不可能把整个图片框放满,而图片框中没有被图象放到的地方就会呈白色,很显眼,我是要把这个图片框中多余白色部分去掉。让图片框的形状和我的图形一模一样。知道了吧?请问应该怎么做?

4 楼

不可能!
图形框和图片框永远都是矩形的!
它们最多只能自动调整大小(图片框)或缩放包含的图形(图形框)。

5 楼

代码写出来吗?

6 楼

我在电脑报上看到一篇文章说能做出透明背景的Swf
大家都知道Swf在位移时不会发生抖动
而且可以用Flash的代码编写
用来做按钮之类的好好使啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册