在窗体中创建两个picturebox,其中picture1的visible属性为flase,picture属性中为一张设定的图片Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds 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 LongPrivate Sub Form_Paint()
Dim x1, x2, Dx, P1, P2 As Single
Dim D, I As Integer
                              
D = 300Dx = Picture1.Width / D
P2 = Picture1.Height
x1 = Picture1.Width / 2     '从中间开始
x2 = x1Picture2.Cls
For I = 1 To D / 2'从中间向左边显示图片
  BitBlt Form1.Picture2.hDC, x1, 0, Dx + 1, P2, Form1.Picture1.hDC, x1, 0, &HCC0020
  x1 = x1 - Dx
  '从中间向右边显示图片
  BitBlt Form1.Picture2.hDC, x2, 0, Dx + 1, P2, Form1.Picture1.hDC, x2, 0, &HCC0020
  x2 = x2 + Dx
  
  Sleep 50
  Next I
End Sub
请问上述代码哪里出了问题呢?我想要的是从中间向两边显示图版,可是怎么出现的效果是从右边向左边显示图片的?

解决方案 »

  1.   

    我以前做的特效之一,你用用看。和你的其实差不多,只是宽度是按1做的。另外要P1、P2大小一样
    '左右开门
    Private Sub special15(ByRef p1 As PictureBox, ByRef p2 As PictureBox)
    Dim w, h, x, y As Integer
    w = p1.Width
    h = p1.Height
    x = w \ 2 + 1
    y = x 'y在此是当X坐标用
    While x >= 0BitBlt p2.hdc, x, 0, 1, h, p1.hdc, x, 0, &HCC0020
    BitBlt p2.hdc, y, 0, 1, h, p1.hdc, y, 0, &HCC0020
    p2.Refresh
    x = x - 1
    y = y + 1
    Wend
    End Sub
      

  2.   

    程序应该是没问题的,可是不知怎么回事,运行时就是有点怪怪的.慢慢再研究一下吧.by the way,谢谢楼上的啦.