请问一下下面这一段有什么问题?我是对两幅图像 逐点进行AlphaBlend合成,可这样的速度很慢,而且 效果也不好For i = 0 To picMask.ScaleWidth For j = 0 To picMask.ScaleWidth cR = (picMask.Point(i, j)) And &HFF cG = ((picMask.Point(i, j)) \ &H100) And &HFF cB = ((picMask.Point(i, j)) \ &H10000) And &HFF With BF .BlendOp = AC_SRC_OVER .BlendFlags = 0 .SourceConstantAlpha = Int((cR+cG+cB)) If Int(cR) > 0 Then Debug.Print Int(cR) End If .AlphaFormat = 0 End With RtlMoveMemory lBF, BF, 4 ' 做AlphaBlend混合 AlphaBlend picDest.hDC, i, j, 1, 1, picBG.hDC, i, j, 1, 1, lBF DoEvents Next j Next i
逐点进行AlphaBlend合成,可这样的速度很慢,而且
效果也不好For i = 0 To picMask.ScaleWidth
For j = 0 To picMask.ScaleWidth
cR = (picMask.Point(i, j)) And &HFF
cG = ((picMask.Point(i, j)) \ &H100) And &HFF
cB = ((picMask.Point(i, j)) \ &H10000) And &HFF With BF
.BlendOp = AC_SRC_OVER
.BlendFlags = 0
.SourceConstantAlpha = Int((cR+cG+cB))
If Int(cR) > 0 Then
Debug.Print Int(cR)
End If
.AlphaFormat = 0
End With RtlMoveMemory lBF, BF, 4
' 做AlphaBlend混合
AlphaBlend picDest.hDC, i, j, 1, 1, picBG.hDC, i, j, 1, 1, lBF
DoEvents
Next j
Next i
我要根据picMask来合成另两幅图。希望有人愿意思提供一种比较快速的算法,马上给分。
http://www.aivisoft.net/Zyl910/VBImgOp.htm
http://www.aivisoft.net/Zyl910/ImgTest.zip
“逐点计算。效果好速度太慢”
逐点计算有很多种方法,VB的PSet是最慢的,API函数SEtPixelV也快不了多少,用DIB就快多了(比PSet快145倍),完全可以实时处理
做这样的东西,你需要系统的学习,否则现在给你说一个公式,笼统说一下方法你也不懂
公式很简单,就是椭圆公式来计算透明度,然后再用DIB的方法逐点绘制出来。
http://www.aivisoft.net/Zyl910/zDIBop.zip
http://community.csdn.net/Expert/topic/3179/3179947.xml?temp=.9119532
《VB算法与数据结构》的范围:
http://community.csdn.net/Expert/topic/3214/3214394.xml?temp=.4806177
请大家帮忙写一个排序算法:根据字符串的长度对字符串数组进行排序。 《VB数字图像处理》的范围:
http://community.csdn.net/Expert/topic/3180/3180615.xml?temp=.2581903
有谁知道幻影2003的那幻影效果是如何实现的
刚才看了贴子,才知道你也是湖南的,真是惭愧啊?
Alpha = Sqr((X - HalfWidth)^2 + (Y - HalfHeight)^2) * 255 / Sqr(HalfWidth^2+HalfHeight^2)
Alpha要归一到0~255
(加分加到Geo_Cra,谢谢)