сделал пародию на волну
она получается толщиной в три пикселя:
две кнопки
в одной
im2 = Image.Load("ripples.gif" 'загружаю картинку в массив чтобы работать с ним
Wait 0.2
FTest.Picture = Picture["ripples.gif"] 'эту же картинку делаю фоном формы, чтобы на ней рисовать
код другой кнопки:
Public Sub Button2_Click()
'примерно по этому сценарию
' 1. делaется кaк-бы blur (т.е. сложение 4х точек вокруг текущей
' ( можно и больше))
' 2. полученное число, делим нa 2 (сдвигом)
' 3. выбирaем точку из тaкой-же позиции, но из 2го буферa
' 4. отнимaем п.3 от п.2 (считaть в словaх!)
' 5. смотрим, если результaт положительный, то переходим нa п.7
' 6. зaписывaем в 3ий бфер в текущую точку 0, и идём нa п.8
' 7. зaписывaем полученное знaчение в 3ий буфер в тек. точку
' 8. продолжaем делaть то-же сaмое, для следующих точек в буфере
Dim bu1, bu2, bu3, butmp As Integer 'три переменные с цветом
Dim xstart, ystart As Integer
Dim xst1, xst2, xst3 As Integer
Dim radius, t As Integer
xstart = 100 ' например начинаю с этих координат
ystart = 100
Draw.Begin(FTest)
For radius = 4 To 40
For t = 0 To 360
xst2 = xstart + (radius * (Sin(t * Pi / 180))) ' типа по кругу идти
yst2 = ystart + (radius * (Cos(t * Pi / 180)))
bu1 = (im2[xst2 + 1, yst2] + im2[xst2 - 1, yst2] + im2[xst2, yst2 + 1] + im2[xst2, yst2 - 1]) Div 2
'bu2 = im2[xst2, yst2] ' если раскомментировать, то подложка после прохождения остается без изменений
bu1 = bu2 - bu1
If bu1 > 0 Then
bu3 = 0
Else
bu3 = im2[xst2, yst2]
End If
т.е. не хочу лишние переменные вводить, может как-то организовать цикл который будет проходить по толщине молны (например там, где blur)
блюр, например в цикле с определенной "толщиной волны"
Меня терзает смутное сомнение, что это неполучится сделать чисто на вб, без привлечения апи такие вещи обычно тормозят дико.
Легче воспроизвести анимированный гиф.
Кстати возможно у меня гдето завалялся такой, правда он небольшой 170х220х8.
кстати, красивее выглядит если
xst1 = xstart + ((radius - 2) * (Sin(t * Pi / 180)))
yst1 = ystart + ((radius - 2) * (Cos(t * Pi / 180)))
и строчку 'bu2 = im2[xst2, yst2] раскомментировать
получилось почти перевести на васек http://www.gamedev.ru/code/articles/?id=4205 (один мозговитый человек помог)
только волны идут не только от предметов, но и от краев рисунка
как избавиться - еще не знаю, плюс без затуханий волн
все, скачал
подскажи, как запустить этот код одновременно по разным координатам?
допустим я их по RND задаю
чтобы несколько кругов одновременно росли, а то одна волна - не интересно