'Декларация на АПИ функцията за налагане на полупрозрачен слой

Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdcDest As Long, ByVal nXOriginDest As Long, ByVal nYOriginDest As Long, ByVal nWidthDest As Long, ByVal nHeightDest As Long, ByVal hdcSrc As Long, ByVal nXOriginSrc As Long, ByVal nYOriginSrc As Long, ByVal nWidthSrc As Long, ByVal nHeightSrc As Long, ByVal BF As Long) As Long

 

Dim PolojenieLev, PolojenieTop 'Декларираме променливи за кординати на прозрачния слой, ако искаме да го местим

 

'Процедура за налагане на прозрачен слой

Private Sub Prozrachnost()

    Trans = HScroll1.Value  'Задаваме процента на прозрачност ( допустим интервал от 0 до 255 )

    lngBlend = Val("&h" & Hex(Trans) & "00" & "00") 'Чрез него превръщайки го в шестнайсетично число получаваме цвят

    Goliama.Cls ' Почистваме голямата картина от предишни въздействия

    'PolojenieLev = PolojenieLev + 10 ' Променяме кординатите на прозрачния слой, ако искаме да го местим

    'PolojenieTop = PolojenieTop + 10 ' Променяме кординатите на прозрачния слой, ако искаме да го местим

    Hirina = Goliama.ScaleWidth 'Въвеждаме в променлива скалта по широчина на голямата картина за удобство

    Visochina = Goliama.ScaleHeight 'Въвеждаме в променлива скалта по височина на голямата картина за удобство

    'Това е функцията AlphaBlend добавяща прозрачния слой върху голямата картина използвайки за образец най-малката Pic3

    AlphaBlend Goliama.hdc, PolojenieLev, PolojenieTop, Hirina, Visochina, Form1.Pic3.hdc, 0, 0, Form1.Pic3.Width / 15, Form1.Pic3.Height / 15, lngBlend

End Sub

 

'Бутон за задействане на Светкавици

Private Sub Command2_Click()

    Timer1.Enabled = True ' Пуска таймера, който периодично задейства процедурата за прозрачност

    Command2.Visible = False ' Правим невидим бутона за по-голяма атракция

    HScroll1.Visible = False ' Правим невидим плъзгача за по-голяма атракция

End Sub

 

'Процедура за преоразмеряване на голямата картина при промяна големината на формата ( Maximize, Normal )

Private Sub Form_Resize()

    If Form1.WindowState <> 1 Then 'Ако формата не е минимизирана

        Kopie.Cls ' Почистваме Копието , защото ще ни трябва

        Kopie.Width = Form1.Width ' Правим ширината на Копието колкото ширината на формата

        Kopie.Height = Form1.Height ' Правим височината на Копието колкото височината на формата

        Goliama.AutoSize = True ' Правим на Голямата картина свойството Авторазмер да е истина

        Kopie.AutoSize = True ' Правим на Копието свойството Авторазмер да е истина

        Goliama.AutoRedraw = True ' Разрешаваме прерисуване на Голямата картина

        Kopie.AutoRedraw = True ' Разрешаваме прерисуване на Копието картина

        'С метода PaintPicture прерисуваме върху Копието всичко от голямата картина, но на копието скалата вече е колкото формата

        Kopie.PaintPicture Goliama.Picture, _

        0, 0, Kopie.ScaleWidth, Kopie.ScaleHeight, _

        0, 0, Goliama.ScaleWidth, Goliama.ScaleHeight

        ' Връщаме образа от Копието върху Голямата картина и понеже свойството AutoSize е True , тя променя размерите си

        Goliama.Picture = Kopie.Image

    End If

End Sub

 

'При кликане върху Голямата картина спираме таймера за Светкавици и правим видими бутона и плъзгача

Private Sub Goliama_Click()

    Timer1.Enabled = False

    Command2.Visible = True

    HScroll1.Value = 0 ' На плъзгача му задаваме стойност 0, което е равносилно на пълна прозрачност на наложения слой

    HScroll1.Visible = True

End Sub

 

'При кликане и промяна на плъзгача, задействаме процедурата за налагане на прозрачния слой

Private Sub HScroll1_Change()

    Prozrachnost

End Sub

 

' При Scroll ( плъзгане ) на плъзгача също задействаме процедурата за налагане на прозрачен слой

Private Sub HScroll1_Scroll()

    Prozrachnost

End Sub

 

' Таймер реализиращ Светкавиците

Private Sub Timer1_Timer()

    On Error Resume Next ' Манипулатор за грешка

    If Timer1.Interval = 3000 Then HScroll1.Value = 0 ' Ако интервала на таймера стане = 3 сек, то да светне

    Timer1.Interval = 25 ' промени интервала на 25 милисекунди

    HScroll1.Value = HScroll1.Value + 20 ' и да започне да увеличава стойността на плъзгача, тоест запова да затъмнява плавно

    If HScroll1.Value >= 190 Then ' Ако стойността на плъзгача стане > 190 , тоест вече е достатъчно затъмнено

        Timer1.Interval = 3000 ' да промени интервала на таймера на 3 сек, което се явява и интервал между светкавиците

    End If

End Sub