PicFade




Public Const FADE_T_TO_B = 0
Public Const FADE_B_TO_T = 1
Public Const FADE_L_TO_R = 2
Public Const FADE_R_TO_L = 3
Public Const FADE_RANDOM = 4
Public Const FADE_OUTWARD = 5

Declare Sub Sleep Lib "kernel32"(ByVal dwMilliseconds As Long)

Sub Fade(Pic As PictureBox, Style As Integer, Blocks As Integer)
Dim width_section_size As Integer
Dim height_section_size As Integer
Dim i As Integer, j As Integer
Dim save_color As Long
'Saves the picbox's current forecolor

save_color = Pic.ForeColor
'Set Pics forecolor to its backcolor

Pic.ForeColor = Pic.BackColor
'Corrects the Blocks if needed

If Blocks < 5 Then Blocks = 5
If Blocks > 100 Then Blocks = 100
'Sets the size of each width section

width_section_size = Pic.ScaleWidth / Blocks
'Sets the size of each height section

height_section_size = Pic.ScaleHeight / Blocks

Select Case Style
Case 0 'Fading top to bottom
For i = 0 To Blocks
For j = 0 To Blocks
Pic.Line ((j * width_section_size), _
(i * height_section_size))-((j + 1) * _
width_section_size, (i + 1) * _
height_section_size), , BF
DoEvents
Next
DoEvents
Next
Case 1 'Fading bottom to top
For i = Blocks To 0 Step -1
For j = 0 To Blocks
Pic.Line (((j - 1) * width_section_size), _
((i - 1) * height_section_size))-(j * _
width_section_size, i * height_section_size), , BF
DoEvents
Next
DoEvents
Next
Case 2 'Fading left to right
For i = 0 To Blocks
For j = 0 To Blocks
Pic.Line ((i * width_section_size), _
(j * height_section_size))-((i + 1) * _
width_section_size, (j + 1) * _
height_section_size), , BF
DoEvents
Next
DoEvents
Next
Case 3 'Fading right to left
For i = Blocks To 0 Step -1
For j = 0 To Blocks
Pic.Line (((i - 1) * width_section_size), _
(j * height_section_size))-(i * _
width_section_size, (j + 1) * _
height_section_size), , BF
DoEvents
Next
DoEvents
Next
Case 4 'Fading Random
Dim bit_array() As Byte
ReDim bit_array(Blocks, Blocks)
Dim counter As Integer
Do
Do
width_next_block = Int(Blocks * Rnd)
'Generate the random numbers

height_next_block = Int(Blocks * Rnd)
'Generate the random numbers

'MsgBox bit_array(width_next_block, height_next_block)

If bit_array(width_next_block, height_next_block) = 0 Then
Exit Do
End If
counter = counter + 1
If counter = Blocks * 10 Then Exit Do
Loop
If counter = Blocks * 10 Then Exit Do
counter = 0
'Update the bit_array

bit_array(width_next_block, height_next_block) = 1
Pic.Line ((width_next_block * width_section_size), _
(height_next_block * height_section_size))- _
((width_next_block + 1) * width_section_size, _
(height_next_block + 1) * height_section_size), , BF
DoEvents
Loop
Pic.Line (0, 0)-(Pic.ScaleWidth, Pic.ScaleHeight), , BF
Case 5 'Fading Outward
For i = (Blocks / 2) To 0 Step -1
Sleep (20)
Pic.Line (i * width_section_size, i * _
height_section_size)-(((Blocks - i) + 1) * _
width_section_size, ((Blocks - i) + 1) * _
height_section_size), , BF
Next

End Select
'Restores the picbox's original forecolor

Pic.ForeColor = save_color
End Sub
'es.

'Fade(Picture1, Style, Blocks)

Usare: Fade(Picture1, Style, Blocks)












( picfade.html )- by Paolo Puglisi - Modifica del 17/12/2023