实现半透明效果
有两个图片互相有一部分重叠,要求实现重叠部分是两个图片互相渗透的半透明效果?(win98,vb6),给分。 问题点数:74、回复次数:12Top
1 楼JYQing(极于情)回复于 2001-05-15 20:12:00 得分 30
我见过一些程序的半透明效果是利用BitBlt的vbSrcAnd方法来实现,但图片的混合效果比较差。如果你不在意图片混合的速度,那么下面的代码很适合:
Private Function COMBINAR(COLOR1 As Long, COLOR2 As Long) As Long
Dim R1 As Integer, G1 As Integer, B1 As Integer, R2 As Integer, G2 As Integer, B2 As Integer
GetRgb COLOR1, R1, G1, B1
GetRgb COLOR2, R2, G2, B2
COMBINAR = RGB((R1 + R2) / 2, (G2 + G1) / 2, (B2 + B1) / 2)
End Function
Private Sub GetRgb(ByVal color As Long, ByRef red As Integer, ByRef green As Integer, ByRef blue As Integer)
Dim Temp As Long
Temp = (color And 255)
red = Temp And 255
Temp = Int(color / 256)
green = Temp And 255
Temp = Int(color / 65536)
blue = Temp And 255
End Sub
Private Sub Command1_Click()
Picture3.Cls
Picture3.Height = Picture1.Height
Picture3.Width = Picture1.Width
Dim X As Long
Dim Y As Long
For X = 0 To Picture1.ScaleWidth
DoEvents
For Y = 0 To Picture1.ScaleHeight
Picture3.PSet (X, Y), COMBINAR(Picture1.Point(X, Y), Picture2.Point(X, Y))
Next Y
Next X
End Sub
由于是一点一点的画,所以速度颇慢!
Top
2 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2001-05-15 21:04:00 得分 30
看看文章:
http://www.applevb.com/art/alphablend.txt
利用AlphaBlend函数实现图像的淡入淡出,实现的是从透明到不透明。简化后也可以实现半透明效果Top
3 楼Ninputer(装配脑袋)回复于 2001-05-15 21:10:00 得分 0
没错,可惜如果是VB.net就更容易了Top
4 楼JYQing(极于情)回复于 2001-05-15 21:13:00 得分 0
我也想知道,在Win98中到底能否正常使用AlphaBlend函数?Top
5 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2001-05-15 21:17:00 得分 0
可以Top
6 楼irq001()回复于 2001-05-16 12:03:00 得分 0
我会去试一下,谢谢回复,一有结果一定报答各位。Top
7 楼irq001()回复于 2001-05-16 21:27:00 得分 0
to JYQing(极于情):
我还记得你,为什么给两个颜色,再求平均值就能实现半透明,我觉得也应该考虑颜色等诸多方面,不过你的跟TechnoFantasy(www.applevb.com)用AlphaBlend函数结果相同,只是慢了些。
另外,AlphaBlend函数在Win98中能正常使用。
to TechnoFantasy(www.applevb.com):
很有用。
请等待加分。Top
8 楼JYQing(极于情)回复于 2001-05-16 22:18:00 得分 0
原理是什么,我也说不清,很多时我拿图像问题问别人时,都叫我去看什么计算机图形学。
我未啃过这类书,只懂一点点VB编程,抱歉,帮不了你。
我也得试试AlphaBlend,速度应该很快吧!Top
9 楼ticsa(脱壳虾)回复于 2001-05-16 22:38:00 得分 14
今天买的《电脑爱好者》上的程序谷里有篇用Delphi做半透明窗体的例子
用的就是AlphaBlendTop
10 楼irq001()回复于 2001-05-17 18:24:00 得分 0
谢各位了。Top
11 楼winthegame(120斤重的大青蛙)回复于 2001-05-27 03:19:00 得分 0
关注Top
12 楼winthegame(120斤重的大青蛙)回复于 2001-05-27 03:19:00 得分 0
关注Top




