Scrolling background на форме

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Scrolling background на форме

Сообщение kibernetics » 06.06.2007 (Ср) 13:41

"Привет, я Трой Маклюр, Вы должны помнить меня по таким фильмам, как ..., э-э-э..., м-м-м..."

©Трой Маклюр, Симпсоны.

Ну, а если по делу, то может кому-то попадалась. или кто-то в курсе, как сделать движущийя бекграунд на форме(можно на Picture).

Суть такая: хочу организовать массив цветных точек, отрисовать их(получится исходная картинка), потом размножить полученную каотинку по периметру формы и заставить двигаться какбы бесконечно вверх.

В принципе массив точек и масштабирование сделать будет не трудно. А вот как заставить двигаться? У кого-нить есть идеи или примеры?
Или может иные предложения по компонованию кода...
Спасибо.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Scrolling background на форме

Сообщение Денис » 06.06.2007 (Ср) 14:51

kibernetics писал(а):Трой Маклюр


Такой кирпичик пойдет? Я сделал так. на форме, внизу рисуется линия из точек случайного цвета. потом врубается функция побитового сдвига вверх на 1 пиксел. и вперед! :twisted:
Вложения
Form1.rar
(683 байт) Скачиваний: 74
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 06.06.2007 (Ср) 15:07

kibernetics
Эээ, знаешь, что?.. Вынеси Randomize в Form_Load - будет красивей :!:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 06.06.2007 (Ср) 15:25

VB_D3D_Денис
круто :)

а можешь прикрутить сдвиг к этому коду:
Код: Выделить всё
Sub TileBkgd(frm As Form, picholder As PictureBox, bkgdfile As String)
    If bkgdfile = "" Then Exit Sub
    Dim ScWidth%, ScHeight%, ScMode%, n%, o%
    ScMode% = frm.ScaleMode
    picholder.ScaleMode = 3
    frm.ScaleMode = 3
    picholder.Picture = LoadPicture(bkgdfile)
    picholder.ScaleMode = 3

    For n% = 0 To frm.Height Step picholder.ScaleHeight

        For o% = 0 To frm.Width Step picholder.ScaleWidth
            frm.PaintPicture picholder.Picture, o%, n%
        Next o%
    Next n%
    frm.ScaleMode = ScMode%
    picholder.Picture = LoadPicture()
End Sub

Picturebox на форме должен быть:
AutoRedraw = TRUE
AutoSize = TRUE
ClipControls = TRUE
Visible Property = FALSE

сдвигать не точки, а уже замощёную картинку...
потому как с использованием PSet наблюдается моргание перерисовки

П.С. плюс мне кажется, что после какого-то времени работы, будет что-нить типа, OVERFLOW...
точки-то куда-то деются... всё выше, выше и выше... и не уничтожаются...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.06.2007 (Ср) 18:40

Тут где-то лежал наш с Хакером клон яйца из VB, так там scrolling background был.
Сам найдёшь, или разыскивать для тебя?
Изображение

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 06.06.2007 (Ср) 19:19

kibernetics
Хто из нас бывалый? Ты! Ты и прикручивай :wink:

... а вот насчет исчезающих точек и оверфлова не могу не высказаться! Этож надо же так накуриться то! :roll: Ты хоть понимаешь, что такое побитовый сдвиг??? Какие точки куда должны подниматься??? Ты еще скажи что каждая точка это объект и под нее память выделяется! Короче, сразу тебя успокою, - точки не поднимаются выше клиентской области окна. на линии с координатой у=0 они перерисовываются друг на друга.

Вау, Тёмыч вы клонировали енто? Хех, поищу, на это надоть посмотреть. :idea:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 06.06.2007 (Ср) 21:14

VB_D3D_Денис писал(а):Этож надо же так накуриться то! :roll: Ты хоть понимаешь, что такое побитовый сдвиг??? Какие точки куда должны подниматься??? Ты еще скажи что каждая точка это объект и под нее память выделяется!

Ну зачем же так резко? Могу тебе сказать, что ты тоже не прав, ибо побитовый сдвиг это вот что.
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.06.2007 (Ср) 21:27

Эх, горячие финские парни...

Яйцо тут: http://bbs.vbstreets.ru/viewtopic.php?t=26572
Изображение

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 06.06.2007 (Ср) 21:34

Господа!
Спасибо, tyomitch , код нашёл. Очень прикольно сделано. Правда много несовсем ясностей... например, зачем пикчербокс используемый для бекраундера такой длиннющий? Если его укоротить, начинаются глюки немелкие. В общем, там для меня много загадок.

Однако! в инете я наткнулся на очень интересный пример скроллинга, одна функция из пары строчек... в общем, рекомендую взглянуть. Я там немного отсебятил, чтоб более понятно было..

В общем, прошу помощи, чтоб применить этот проект в дело...
Клавиши:
Стрелки: перемещение
Пробел: Замостить окно

Проблема, что нельзя скролить уже замощенное окно. А в окне пикчербокса - можно.
Вложения
Experiment.rar
(135.01 Кб) Скачиваний: 120

Crio
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 21.05.2007 (Пн) 12:01
Откуда: Питер

Сообщение Crio » 08.06.2007 (Пт) 1:18

А что если не перерисовывать пикчербокс, а:
- сделать пикчербокс в два раза выше картинки
- два раза отрисовать в нём эту картинку
- совместить верхний край пикчербокса с верхним краем формы
- двигать пикчербокс вверх по таймеру
- как только пикчербокс полностью пройдёт высоту картинки вернуть его на исходную позицию и дальше двигать

Правда, я архив не смотрел, может там именно так реализовано...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.06.2007 (Пт) 7:04

Нет, там не так.
А вот у меня похоже.
Поэтому и размер пикчербокса такой здоровый.
Изображение

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 09.06.2007 (Сб) 18:20

VB_D3D_Денис писал(а):kibernetics
Хто из нас бывалый? Ты! Ты и прикручивай :wink:



Бывалый - незначит, что я киберпрограммер.
Понимаешь ли, как бы это тебе сказать... дело в том, что я не совсем программист. Вообще понятие программист достаточно многогранно...
Я полагаю, что программистов можно условно разделить на две части:
1. Абсолютные программисты
2. Идейные конструкторы

Так вот, я скорее отношусь ко второй группе. Абсолютные программисты знают как делать код. Какие процессы код затрагивает, на что влияет вызов той или иной функции и т.д. Я, как несведующий в архитектуре программных транзакций с системой, писать такой код не смогу. Мне нравится из программерских реализаций поблочно собирать программу. Т.е. идею разбиваю на части, и думаю как и из чего её реализовать. Незнаю, правильно ли это и грамотно ли, некоторые считают, что это неправильно, что программер это тот, кто может сделать всю работу с нуля. Некоторые вообще не ориентируются на реализацию кода кем-то другим, предпочитая всё писать самим... Моё мнение таково, что незачем изобретать велосипед, и для достижения цели использовать имеющиеся средства, возможно и с небольшими поправками. Конечно интересно, попрактиковатся в изучении работы написанного кода и всячески его модернизировать, но только тогда, когда знаешь как и что должно работать. А у меня зачастую нужда вынуждает быстро ориентироваться в обстановке и применять уже готовые алгоритмы. Например, на работе мы пишем очень большое количество компакт-дисков. Nero для этих целей не совсем подходит. Нужна более гибкая среда для управлениями приводами и отслеживание событий готовности, поэтому я использую чужой код по записыванию компактов вместе с чужим кодом по автоматизации и фильтрованию контента для СД. На написание подобного собственного кода, наверное ушли бы годы... Но жизнь-то так быстротечна и объёмы переваривания информации настолько огромны, что лучше бы каждый занимался именно своим отдельным делом.
Ну а вообще, за всё время я многому научился в ВБ, в том числе и bbs.vbstreets.ru. А также благодаря очень мудрым и умным советам хороших людей с этого форума..
Огромное Спасибо всем. VB is power! And forewer! :D

Crio
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 21.05.2007 (Пн) 12:01
Откуда: Питер

Сообщение Crio » 10.06.2007 (Вс) 18:53

Нужно вам найти собственного хорошего програмера, чтобы ему говорить, что программа должна делать, а дальше он самостоятельно бы её писал и модули к ней прикручивал.

<оффтоп>
Были идеи разработать интеллектуального менеджера для ИПС, чтобы только указывать, какие операции прога проделывает, а агент уже сам искал бы по сайтам и форумам нужный код.
</оффтоп>

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 10.06.2007 (Вс) 21:53

Crio писал(а):Нужно вам найти собственного хорошего програмера, чтобы ему говорить, что программа должна делать, а дальше он самостоятельно бы её писал и модули к ней прикручивал.


Это было бы здорово :). Но такого человека крайне тяжело найти это раз. Второе, что как правильно такой человек должен хорошо и правильно питаться :). Поэтому, я к сожалению, не могу позволить себе такую роскошь :(. Думаешь, сидел бы я на сайтах, если б у меня был такой человещище? Приходится самому, можно сказать, собирать инфу по крупицам.

Вот так и живём..
Да всё нормально, дружище Crio, вот тебе чем интересено программирование? Хотя, сорри, это уже оффтоп

Crio
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 21.05.2007 (Пн) 12:01
Откуда: Питер

Сообщение Crio » 11.06.2007 (Пн) 21:33

Да, лучше через "личные сообщения" писать буду.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 12.06.2007 (Вт) 0:02

Crio
я тебе ответил.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76

    TopList