说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

位图的淡入淡出和渐隐 ,200分等你来拿.请高手拿分

编辑:说三道四文库 发布时间:2018-07-23 04:02
HTML文档下载 WORD文档下载 PDF文档下载
"Rainman_am_I" <Rainman_am_I@hotmail.com>
"163" <huayuxing@163.com>

两位
给你看看我写的:
http://www.csdn.net/expert/topic/879/879364.xml?temp=.7687342
可以中 AlphaBlend 函数,将一幅图画alpha到一幅黑色的图画上。
利用API函数实现图像淡入淡出效果
    一般传统的实现两个PictureBox之间图像的淡入淡出效果都需要使用大量的API函数并进行复杂的调色板以及
绘图设备(Device Context)的操作。但是在Win98、Win2000中,微软提供了支持透明图像拷贝的AlphaBlend函数。
这篇文章就介绍如何通过API函数AlphaBlend实现PictureBox之间图像的淡入淡出效果。    
Public Type rBlendProps
    tBlendOp As Byte
    tBlendOptions As Byte
    tBlendAmount As Byte
    tAlphaType As Byte
End Type
Public Declare Function AlphaBlend Lib "msimg32" (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 widthSrc As Long, _
        ByVal heightSrc As Long, ByVal blendFunct As Long) As Boolean

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
        (Destination As Any, Source As Any, ByVal Length As Long)

Form1的代码窗口中添加如下代码:
Dim lTime As Byte
Sub ShowTransparency(cSrc As PictureBox, cDest As PictureBox, _
    ByVal nLevel As Byte)
    Dim LrProps As rBlendProps
    Dim LnBlendPtr As Long    
    cDest.Cls
    LrProps.tBlendAmount = nLevel
    CopyMemory LnBlendPtr, LrProps, 4
    With cSrc
        AlphaBlend cDest.hDC, 0, 0, .ScaleWidth, .ScaleHeight, _
            .hDC, 0, 0, .ScaleWidth, .ScaleHeight, LnBlendPtr
    End With
    cDest.Refresh
End Sub

Private Sub Command1_Click()   
    lTime = 0
    Timer1.Interval = 100
    Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
    lTime = lTime + 1
    ShowTransparency Picture2, Picture1, lTime
    If lTime >= 255 Then
        Timer1.Enabled = False
    End If
    Me.Caption = Str(Int(lTime / 2.55)) + "%"
End Sub
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘