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位深度。 展开
 我来答
手机用户30134
2011-09-21 · TA获得超过354个赞
知道小有建树答主
回答量:730
采纳率:0%
帮助的人:492万
展开全部
不知道你说的究竟是怎样的透明

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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式