Угасающая анимация - плавное появление и исчезание картинки - VB

Узнай цену своей работы

Формулировка задачи:

Добрый день всем. Подскажите пример угасающей анимации форма с картинкой плавно появляется и плавно затухает. Нашел вот это, но с привязкой к osenxpsuite2010.ocx. Минус в том, что он платный..
Листинг программы
  1. Private Sub Form_Activate()
  2. FadeIn Me.hWnd
  3. WaitTimes 2000
  4. FadeOut Me.hWnd
  5. 'WaitTimes 2000
  6. Unload Me
  7. End Sub
  8. Private Sub Form_Load()
  9. CreateFormSkin Me, LoadPicture("d:\Dropbox\VB_Project\Project_29\SkyrimLoader\Actaul_TEST_Build ГґГґ\SplashScreen\mynwind2005.bmp"), vbWhite
  10. End Sub
  11. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  12. MoveForm hWnd, Button
  13. End Sub
пример...https://youtu.be/2BXhSApNjn8

Решение задачи: «Угасающая анимация - плавное появление и исчезание картинки»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Declare Function UpdateLayeredWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal hdcDst As Long, pptDst As Any, psize As Any, ByVal hdcSrc As Long, pptSrc As Any, ByVal crKey As Long, pblend As Long, ByVal dwFlags As Long) As Long
  4. Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  5. Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
  6.  
  7. Private Const WS_EX_LAYERED = &H80000
  8. Private Const GWL_EXSTYLE As Long = -20
  9. Private Const ULW_ALPHA = &H2
  10. Private Const AB_32Bpp255 = 33488896
  11.  
  12. Dim WithEvents tmrTimer As Timer
  13.  
  14. Private Sub Form_Load()
  15.     Set tmrTimer = Controls.Add("VB.Timer", "tmrTimer")
  16.     tmrTimer.Interval = 32
  17.     SetWindowLong Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
  18.  
  19. End Sub
  20.  
  21. Private Sub tmrTimer_Timer()
  22.     Static sz As Currency, pt As Currency, fr As Long
  23.    
  24.     sz = (Me.ScaleWidth + CCur(Me.ScaleHeight) * 4294967296#) / 10000
  25.     UpdateLayeredWindow Me.hwnd, Me.hDC, pt, sz, Me.hDC, pt, 0, &H1000000 Or fr, ULW_ALPHA
  26.    
  27.     fr = (fr + &H20000) And &HFF0000
  28.    
  29. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы