
AlphaBlend图片透明处理问题
上图是用LoadBitmap加载的一个资源,用AlphaBlend后形成的图形,AlphaBlend的AlphaFormat=AC_SRC_ALPHA;这个图是用SHLo...
上图是用LoadBitmap加载的一个资源,用AlphaBlend后形成的图形,AlphaBlend的AlphaFormat = AC_SRC_ALPHA ;这个图是用SHLoadImageFile加载的一个bmp图片,用AlphaBlend后形成的图形,AlphaFormat如果为AC_SRC_ALPHA则无任何显示,估计是SHLoadImageFile加载后变为单色,AlphaFormat必需为0才可以显示。 请问怎么样用SHLoadImageFile来显示成图一的效果。 注,加载的图片为同一图片,bmp格式,32位深度。
展开
1个回答
展开全部
不知道你说的究竟是怎样的透明
AlphaBlend 的功能就是两幅图片的alpha混合
能不能说的再具体点
2张图片不一样大,并没有关系 AlphaBlend 可以分别指定源图象和目标图象大小
只要将 2个PICTURE的autoredraw属性设为true ,即使图片框不可见
50%透明化也可以实现的
Private Const SRCCOPY = &HCC0020
Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal BLENDFUNCT As Long) As Long
Private 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
Private Sub Form_Load()
Picture1.AutoSize = True
Picture1.AutoRedraw = True
Picture1.Visible = False
Picture2.AutoSize = True
Picture2.AutoRedraw = True
Picture2.Visible = False
End Sub
Private Sub Command1_Click()
Picture1.Picture = LoadPicture("c:\1.bmp")
Picture2.Picture = LoadPicture("c:\2.bmp")
AlphaBlend Picture1.hdc, 10, 10, 100, 100, Picture1.hdc, 20, 20, 100, 100, &H10000 * 128
BitBlt Me.hdc, 0, 0, 300, 300, Picture1.hdc, 0, 0, SRCCOPY
End Sub
Picture1,Picture2都是不可见的
完成混合后,将混合效果复制到了窗体
AlphaBlend 的 混合度参数 BLENDFUNCT
在VB里使用时 格式为 混合度(0-255)* &H10000
AlphaBlend 的功能就是两幅图片的alpha混合
能不能说的再具体点
2张图片不一样大,并没有关系 AlphaBlend 可以分别指定源图象和目标图象大小
只要将 2个PICTURE的autoredraw属性设为true ,即使图片框不可见
50%透明化也可以实现的
Private Const SRCCOPY = &HCC0020
Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal BLENDFUNCT As Long) As Long
Private 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
Private Sub Form_Load()
Picture1.AutoSize = True
Picture1.AutoRedraw = True
Picture1.Visible = False
Picture2.AutoSize = True
Picture2.AutoRedraw = True
Picture2.Visible = False
End Sub
Private Sub Command1_Click()
Picture1.Picture = LoadPicture("c:\1.bmp")
Picture2.Picture = LoadPicture("c:\2.bmp")
AlphaBlend Picture1.hdc, 10, 10, 100, 100, Picture1.hdc, 20, 20, 100, 100, &H10000 * 128
BitBlt Me.hdc, 0, 0, 300, 300, Picture1.hdc, 0, 0, SRCCOPY
End Sub
Picture1,Picture2都是不可见的
完成混合后,将混合效果复制到了窗体
AlphaBlend 的 混合度参数 BLENDFUNCT
在VB里使用时 格式为 混合度(0-255)* &H10000
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询