用PictureBox控件,再用Bitblt函数交替画出图像。

解决方案 »

  1.   

    '按钮用PictureBox控件
    Private Sub 按钮_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      按钮.BackColor = RGB(0, 0, 255)
    End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      按钮.BackColor = &HFF00FF
    End Sub
      

  2.   

    有一个函数叫重画的好像是的setredaw()你试试
      

  3.   

    用PictureBox控件,再用Bitblt函数交替画出图像,是可以的,但是我的图片时透明的,picturebox 没有透明背景。
      

  4.   

    用PictureBox控件,再用Bitblt函数交替画出图像,是可以的,但是我的图片时透明的,picturebox 没有透明背景。
      

  5.   

    declare bitblt api function with api text viewerbitblt hdc, x, y, srchdc, x, y, cx, cy, FLAG
      

  6.   

    用PictureBox控件,再用Bitblt函数交替画出图像,是可以的,但是我的图片时透明的,picturebox 没有透明背景。
      

  7.   

    Form1上放2个PictureBox,一个CommandBox,给Picture1设置一些图片。
    TransBitblt的TransColor可以指定透明色。Private Const SRCCOPY = &HCC0020
    Private Const SRCINVERT = &H660046
    Private Const SRCAND = &H8800C6Private Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
    Private Declare Function GetBkColor Lib "gdi32" (ByVal hdc As Long) As Long
    Private Declare Function GetTextColor Lib "gdi32" (ByVal hdc As Long) As Long
    Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
    Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
    Private Declare Function CreateBitmap Lib "gdi32" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long
    Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
    Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
    Private Declare Function BitBlt Lib "gdi32" (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
    Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Private Function TransBitBlt(ByVal hDCD As Long, ByVal x As Long, ByVal y As Long, ByVal DX As Long, ByVal DY As Long, ByVal hDCS As Long, ByVal X0 As Long, ByVal Y0 As Long, ByVal TransColor As Long) As Boolean
        Dim RGBBK As Long
        Dim RetL As Long
        Dim RetI As Long
        Dim RGBBKS As Long
        Dim RGBFG As Long
        Dim HbmMask As Long
        Dim HbmT As Long
        Dim hDCMask As Long
        
        RetL = SetBkColor(hDCD, TransColor)
        
        RGBBK = GetBkColor(hDCD)
        RGBFG = GetTextColor(hDCD)
        RGBBKS = GetBkColor(hDCS)
        
        RetL = SetTextColor(hDCD, RGB(0, 0, 0))
        hDCMask = CreateCompatibleDC(hDCS)
        
        If IsNull(hDCMask) Then
            Exit Function
        End If
        
        HbmMask = CreateBitmap(DX, DY, 1, 1, ByVal 0&)
        
        If IsNull(HbmMask) Then
            RetI = DeleteDC(hDCMask)
            Exit Function
        End If
        
        HbmT = SelectObject(hDCMask, HbmMask)
        RetL = SetBkColor(hDCS, RGBBK)
        RetI = BitBlt(hDCMask, 0, 0, DX, DY, hDCS, X0, Y0, SRCCOPY)
        RetL = SetBkColor(hDCD, RGB(255, 255, 255))
        
        RetI = BitBlt(hDCD, x, y, DX, DY, hDCS, X0, Y0, SRCINVERT)
        RetI = BitBlt(hDCD, x, y, DX, DY, hDCMask, 0, 0, SRCAND)
        RetI = BitBlt(hDCD, x, y, DX, DY, hDCS, X0, Y0, SRCINVERT)
        
        RetI = SelectObject(hDCMask, HbmT)
        RetI = DeleteObject(HbmMask)
        RetI = DeleteDC(hDCMask)
        
        RetL = SetBkColor(hDCD, RGBBK)
        RetL = SetTextColor(hDCD, RGBFG)
        RetL = SetBkColor(hDCS, RGBBKS)
        
        TransBitBlt = True
    End Function
    Private Sub Command1_Click()
        TransBitBlt Picture2.hdc, 0, 0, 50, 50, Picture1.hdc, 0, 0, RGB(192, 192, 192)
        Picture2.Refresh
    End Sub