Deutsch

Воспоминание программирование на VB 6.0 18.09.2024

155  
uscheswoi_82 коренной житель18.09.24 06:47
uscheswoi_82
18.09.24 06:47 
Последний раз изменено 18.09.24 06:56 (uscheswoi_82)

Всем привет! Всем доброе утро! Сегодня мы будем вспомнинать как делалась анимация в Visual Basic 6.0. Но прежде, чем начнём заниматься программированием, начнём немножко с болтавни. Вчера я ездил к врачу, а когда я ехал обратно домой, то была большая пробка, из-за ремонта дорог. Вообще город в котором я живу т.е. г. Пассау постоянно расширяется, и постоянно идут где-нибудь стройки, и из-за этого опаздывает общественный транспорт. Домой я ехал сначало на миниавтобусе, можно сказать маршрутка, выглядет так (http://www.bus.oliver-wernicke.de/pa/img/tausch.jpg)



И так (http://www.bus.oliver-wernicke.de/pa/img/tausch_810.jpg):


Потом пересел на другой автобус.


Я езжу на общественном транспорте не потому-что я бедный, а потому-что у меня нет водительских прав, и в нашем городе проблема с парковками. Проблема с парковками, потому-что много людей приезжают из соседних деревней и городов. Люди, которые живут в нашем городе, т.е. в г. Пассау, и у которых есть машина, едут именно на автобусе, иначе будут 15-20 минут искать свободную парковку. Только что, а точнее 2 часа назад, я смотрел Deadpool 3 с Растамахой. Я его не весь посмотрел, а только половину.

Ну ладно, давайте кодить, вчера я ответил одному челу про прозрачность см. https://otvet.mail.ru/answer/2062128395. Короче нам понадобиться Win32 API функция BitBlt, эта функция как-бы копирует изображения из какого-то источника HDC (handle device context). Нужно две картинки, одна маска, другая сам спрайт см.:


Вот код:

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 Const SRCAND = &H8800C6
Private Const SRCPAINT = &HEE0086
Dim x As Integer
Private Sub Form_Load()
  x = 0
  Timer1.Interval = 100
  Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
  x = x + 3
  Me.Cls
  BitBlt Me.hDC, x, 10, 32, 32, Picture2.hDC, 0, 0, SRCPAINT
  BitBlt Me.hDC, x, 10, 32, 32, Picture1.hDC, 0, 0, SRCAND
  Me.Refresh
End Sub



Картиночки:

Спрайт:


Маска:



Скрин формы:



Вуаля! а вот результат см. https://my.mail.ru/mail/semyon_kulikov/video/_myvideo/35.h...



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
#1