Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Эффект [D7, WinXP]


Builder ©   (2004-01-26 23:52:00) 

Уважаемые мастера,
я встречал пару раз на сайтах такой эффект - по экрану всякие там снежинки летают, и проч. причем поверх окна.
Ну я понимаю что там все в jave, а хотелось бы в Дельфи как - нибудь сделать, пробовал как фон *.avi вставлять - получилось не то. Вообщето я так понимаю что нужно как - то резидент делать или что?


Mihey   (2004-01-30 20:28:00) [1]

2 Mantic0re:

Э-э... А как добъёшься прозрачности окна? Рисуя подложку? Тогда работать на компе будет невозможно. Ладно, пофиг. Всё равно мы склоняемся к тому, что надо самому рисовать, а не пытаться .avi загружать - это же так смешно. Avi размером с экран даст такую тормозню....


Mantic0re   (2004-01-30 10:09:00) [2]

Ну и что?

Смотрится все нормально.
И почему только десктоп - ведь разговор был о собственном окне.

Можно и через регионы, но все равно - медленно,
спрайты быстрее :)


Mihey   (2004-01-29 17:38:00) [3]

2 Mantic0re:

> Ну и что, что будут затирать, а ты наверх рисуй (таймер..)

А вот это зря. Если рисовать по таймеру, то останутся моменты, когда окно показалось, но таймер ещё не сработал. К тому же, десктоп - не такой объект, на котором быстро рисуется.

Наверное, лучше всего идити через регионы. Я недавно вытащил из копмонента FormRgn процедуру создания региона по изображению и переписал её под Graphic32 - получилось очень быстро.


Mantic0re   (2004-01-29 12:11:00) [4]

2Mihey:

Ну и что, что будут затирать, а ты наверх рисуй (таймер..)


Mihey   (2004-01-28 23:29:00) [5]

d.write('<span id=Sn'+i+'><img src="images/sn1.gif"></span>');

А это что?


DENNIS   (2004-01-28 22:01:00) [6]

html+JS+Style.


DENNIS   (2004-01-28 22:00:00) [7]

Mihey>>

<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style>
#Sn1 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn2 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn3 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn4 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn5 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn6 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn7 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
</style>
<script language="JavaScript">
<!-- //hide script KDI!
miny=300;
d=document;
function beg() {
d.all.Sn1.style.posLeft=100;
d.all.Sn1.style.posTop=150;
d.all.Sn2.style.posLeft=200;
d.all.Sn2.style.posTop=220;
d.all.Sn3.style.posLeft=300;
d.all.Sn3.style.posTop=100;
d.all.Sn4.style.posLeft=400;
d.all.Sn4.style.posTop=300;
d.all.Sn5.style.posLeft=500;
d.all.Sn5.style.posTop=50;
d.all.Sn6.style.posLeft=600;
d.all.Sn6.style.posTop=300;
d.all.Sn7.style.posLeft=700;
d.all.Sn7.style.posTop=150;
}
function fly() {
x=d.all.Sn1.style.posLeft;
y=d.all.Sn1.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn1.style.posLeft=x;
d.all.Sn1.style.posTop=y;
x=d.all.Sn2.style.posLeft;
y=d.all.Sn2.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn2.style.posLeft=x;
d.all.Sn2.style.posTop=y;
x=d.all.Sn3.style.posLeft;
y=d.all.Sn3.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn3.style.posLeft=x;
d.all.Sn3.style.posTop=y;
x=d.all.Sn4.style.posLeft;
y=d.all.Sn4.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn4.style.posLeft=x;
d.all.Sn4.style.posTop=y;
x=d.all.Sn5.style.posLeft;
y=d.all.Sn5.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn5.style.posLeft=x;
d.all.Sn5.style.posTop=y;
x=d.all.Sn6.style.posLeft;
y=d.all.Sn6.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn6.style.posLeft=x;
d.all.Sn6.style.posTop=y;
x=d.all.Sn7.style.posLeft;
y=d.all.Sn7.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn7.style.posLeft=x;
d.all.Sn7.style.posTop=y;
setTimeout("fly()", 100);
}
// -->
</script>
.....
<body>
<script language="JavaScript">
<!-- //hide script KDI!
for (i=1;i<8;i++) {
d.write('<span id=Sn'+i+'><img src="images/sn1.gif"></span>');
}
// -->
</script>
</body>
</html>


Mihey   (2004-01-28 20:08:00) [8]

2 Mantic0re:

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


Mihey   (2004-01-28 20:06:00) [9]

2 DENNIS:

> HTML лежит в нете, не надо к нему обращаться. Его вызыват, например, IE. В нем с помощью JS можно менять свойства объектов (в том числе left и top для картинки, но там еще есть ньюансы). Не обязательно DHTML. Delphi там не при делах.

Слушай, а ты что-нибудь хорошо знаешь? Вот сделал ты на HTML цветную надпись, например "<font color="#00FF00">Delphi!!!</font>". Вот как ты на JavaScript изменишь цвет этой надписи????? Да никак, потому что в коде ты не сможешь указать, цвет какой именно надписи надо менять! Чистый HTML не индексирует элементы!!!!!

Решение. Вместо этого пишем: "<font id="Sign1" color="#00FF00">Delphi!!!</font>". И вот уже по этому id мы можем обращаться к этой надписи. Так вот этот id - это элемент DHTML. DHTML - это Dynamic HTML, т.е. ДИНАМИЧЕСКИЙ. А просто HTML - статичен. Ты понимаешь разницу?

Блин, чесное слово, если не знаешь, то не вводи остальных в заблуждение. Почему то пока ещё DHTML не был введён, такие снежинки в Интернете не появлялись. По твоему, раньше люди были глупее???


Manticore   (2004-01-28 11:05:00) [10]

Ну конечно в отдельном потоке,
и каждая снежинка - объект (а можно и не так 8) )


Mantic0re   (2004-01-28 11:03:00) [11]

А я бы просто спрайты рисовал на GetWindowDC(MainWinHnd)...
И просто и быстро и без гимора..
Какие там нафиг DHTML..


DENNIS   (2004-01-27 23:42:00) [12]

Mihey> Ха-ха. Вот только все подряд теперь будем растягивать!

HTML лежит в нете, не надо к нему обращаться. Его вызыват, например, IE. В нем с помощью JS можно менять свойства объектов (в том числе left и top для картинки, но там еще есть ньюансы). Не обязательно DHTML.
Delphi там не при делах.

P.S.
Любишь ты двойки ставить. Лучше объясни человеку как, если знаешь.


Mihey   (2004-01-27 22:20:00) [13]

> _non_ прав - Обычнай HTML c JavaScript. Если тебе нужно могу дать.

Очень интересно, как ты обратишься к объекту, если у тебя обычный HTML. Уж если точно, то плюс ко всему этому ещё и DHTML обязательно нужен, с его слоями или хотя бы идентифицированием элементов.

> Если для каждой снежинки делать отдельное окно, то какими силами???

Угу, наделать тысячу форм (в Design Time), присвоить им белый цвет и изменять Top и Left. А ещё лучше TImage растянуть на весь экран - всё равно больше не видно.

2 Builder:

Делается это либо через рисовнаие на десктопе, либо через оверлеи, используя DirectX, а всякиз котят можно делать, например, через окна с регионами.


Brahman   (2004-01-27 13:09:00) [14]

Вот, кстати и путь к решению минимальными силами.
TWebBrowser + DHTML


DENNIS   (2004-01-27 11:54:00) [15]

_non_ прав - Обычнай HTML c JavaScript. Если тебе нужно могу дать. Делал как-то давно для своей "HOME". А что касается дельфы, то была прога "Snow". Падал снег на окна, панель  пуска. Если для каждой снежинки делать отдельное окно, то какими силами???


_none_   (2004-01-27 11:17:00) [16]

to [Builder] а снежинки на сайте - обычный динамик хтмл


_none_   (2004-01-27 11:16:00) [17]

to [Builder] создается окошко, на которое вырезается по форме с помощью регионов


Builder   (2004-01-27 10:43:00) [18]

Нужно окно программы, а резидент, не значит assembler'овский
вирус, а просто путь к решению.
Есть множество прикольных приложений - котята там бегают, или шарики летают, вот мне интересно как этоо делается


Brahman   (2004-01-27 09:55:00) [19]

Сначала разберись, что нужно: окно твоей программы, окно Windows (Desktop), да и про "резиденты" забудь:)


Наверх

Титульная страница Поиск, карта сайта Написать письмо