送分100分:如何设置图片透明,不挡住后面的图片在VB6中,背景图片(称作图片1)主体是蓝色,在此图片之上再放置
送分100分:如何设置图片透明,不挡住后面的图片
在VB6中,背景图片(称作图片1)主体是蓝色,在此图片之上再放置一个图片(称作图片2),图片要是我们公司的名称,图片2在PHOTOSHOP中制作为背景是透明的。但是在VB6中用IMAGE控件加载后,背景却成了白色。
如何让图片2的背景为透明呢,如果没有图片1的蓝色作为他的背景,图片2的效果根本就出不来。
注:图片1是一幅图片(并不只是一片蓝色),要随屏幕的大小而改变大小,图片2的背景为透明才能与之衔接好。所以并不是将图片2的背景设置为蓝色那么简单就可以解决的。
[解决办法]
A)图片2用gif格式保存。
B)无论什么效果,直接在 Photoshop 中合成一张图不就行了。
[解决办法]
用PNG格式图片也行
[解决办法]
[解决办法]用gdi+可使VB能用png格式图片,网上代码有
[解决办法]把 图片2 与背景图片合成在一起。
在网上搜索一下 图片自动适应窗口大小 的代码,参考一下。
[解决办法]http://www.m5home.com/blog/article.asp?id=392
使用GDI+显示PNG图象
[解决办法]这是让蓝色背景透明的代码, 在窗体上加载图片1 ,Picture1加载图片 2, 图片2的背景是蓝色的,其它设你可以改 TransColor = RGB(?,?,?)
Option Explicit '强制宣告定义变量
Private Declare Function GdiTransparentBlt Lib "gdi32" (ByVal hdc1 As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal W1 As Long, ByVal H1 As Long, ByVal Hdc2 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal W2 As Long, ByVal H2 As Long, ByVal Color As Long) As Long
Dim W&, H&, TransColor& '定义变量
Private Sub Form_Load()
Me.BorderStyle = 0: Me.Caption = ""
Me.AutoRedraw = True: Me.KeyPreview = True
'将窗体居中显示 (屏幕宽度减去窗体的宽度)除以2 , (屏幕高度减去窗体的高度)除以2
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
TransColor = RGB(0, 0, 255)
W = Picture1.Width \ 15: H = Picture1.Height \ 15
Picture1.AutoRedraw = True
Picture1.Move Screen.Width
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set Form1 = Nothing
End
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 27 Then Unload Me
End Sub
Private Sub Form_Click()
GdiTransparentBlt Me.hDC, (Me.Width - W * 15) \ 2 \ 15, (Me.Height - H * 15) \ 2 \ 15, W, H, Picture1.hDC, 0, 0, W, H, TransColor
Me.Refresh
End Sub