各位大哥、大姐!我是个菜鸟,我现在有个问题,就是在VB编程中有两个picture(picture1,picture2),我要让它们一个淡化消失的同时,另一个渐渐显出,不知道代码怎么写,向大家请教!

解决方案 »

  1.   

    实用ALPHABLEND这个API,WIN98下也有,不过似乎不起作用,WIN2000下绝对可以用。
    相关API:RtlMoveMemory
    定义:
    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 Sub RtlMoveMemory Lib "kernel32.dll" (Destination As Any, Source As Any, ByVal Length As Long)Private Type BLENDFUNCTION
      BlendOp As Byte
      BlendFlags As Byte
      SourceConstantAlpha As Byte
      AlphaFormat As Byte
    End Type过程:
    Private Sub AlBnd()
    Dim BF As BLENDFUNCTION
    Dim lBF As Long
    Dim X As Long
    Dim Y As Long
    BF.SourceConstantAlpha = 80 '输出的透明度
    RtlMoveMemory lBF, BF, 4
    With Picture1
       AlphaBlend .hdc, 0, 0, .Width, .Height, Picture2.hdc, 0, 0, .Width, .Height, lBF
    End With
    End Sub
    '这个过程将Picture2上的图片以80/255的透明度输出到Picture1上.
    '如果两个Picture控件的大小一致,速度非常快;
    '如果大小不同,则系统会自动缩放,但是速度会慢一些。
      

  2.   

    用调色板吧, 假如一个颜色是 RGB(255,255,255), 你可以将它从RGB(0,0,0) 慢慢画到RGB(255,255,255)
      

  3.   

    回复人: vodlinux(好易用) ( ) 信誉:100  2004-11-10 20:51:00  得分: 0  
         用调色板吧, 假如一个颜色是 RGB(255,255,255), 你可以将它从RGB(0,0,0) 慢慢画到RGB(255,255,255)
    *****************************
    绝对不懂,给讲讲如何实现