vb6.0 bitblt图片控件怎么都变黑了

函数声明:DeclareFunctionBitBltLib"gdi32"Alias"BitBlt"(ByValhDestDCAsLong,ByValxAsLong,ByV... 函数声明:
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (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
参数解释:
目标环境:hDestDC——目标设备环境;x——左上角;y——顶端;nWidth——宽;nHeight——高
源环境:hSrcDC——源设备环境;xSrc——源左上角;ySrc——源顶端;
dwRop——位处理操作,如 vbSrcAnd;vbSrcAnd;vbSrcCopy;vbSrcErase;vbSrcInvert 等
(目标环境或源环境只能是 Picture, Form 或 Printer 对象。各单位为象素。)
进行处理之前,我们需要对鸟的图片进行处理:先复制一份相同的图形,将其应该透明之处(鸟的背景)设置为黑色(设此图为sPic),再将另一图做以下处理:要复制的地方(鸟)设置为黑色,其余地方设置(鸟的背景)为白色(设此图为Mask)。设树的图形为名dPic。
最后,请加入以下代码:
R=BitBlt(dPic.hdc,0,0,sPic.Width,sPic.Height,Mask.hdc,0,0,vbScrCopy)
R=BitBlt(dPic.hdc,0,0,sPic.Width,sPic.Height,sPic.hdc,0,0,vbScrInvert)

==========
我照着上述的方法调试,但是点击按钮,加载树的控件变成黑的了
请高手帮我解决,谢谢
用了你们的方法还是不行 谁能把这个例子的源代码给我 谢谢 万分感谢
展开
 我来答
果建翼
2008-10-19 · TA获得超过7923个赞
知道大有可为答主
回答量:1684
采纳率:0%
帮助的人:2421万
展开全部
你是想做透明色吧。

首先光栅化参数就不对,应该用vbSrcAnd和vbSrcPaint两次绘制。而不是什么VbSrcCopy。另外注意:是“Src”不是“Scr”

其次要保证源图的AutoRedraw属性为True,否则Blt出来的图像不是真正的图像。

下来,如果你想要用sPic.Height这种代码的话,你需要保证其单位是象素,VB中默认是Twip,这个肯定是错的,需要将其父控件的ScaleMode改为Pixel。

最后,做透明色GDI中有更好API,TransparentBlt,比两次BitBlt方便很多,效果也好。

还有问题话请留邮箱。
xyl3389
2008-10-19 · TA获得超过119个赞
知道小有建树答主
回答量:255
采纳率:0%
帮助的人:246万
展开全部
R=BitBlt(dPic.hdc,0,0,sPic.Width,sPic.Height,Mask.hdc,0,0,vbSrcAnd)
R=BitBlt(dPic.hdc,0,0,sPic.Width,sPic.Height,sPic.hdc,0,0,vbSrcPaint)

这样就OK了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
djrm_yb
2008-10-19 · TA获得超过1927个赞
知道小有建树答主
回答量:1035
采纳率:100%
帮助的人:776万
展开全部
sPic.Width改成sPic.ScaleWidth,其他的同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qqsq35
2008-10-19
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
参数 不对 你不会用 ,要是把分给我 我保证 给你源码 一目了然 呵呵 我QQ271072330
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式