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

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

Исчезающий Image [D5, D7, Win95/98, WinXP]


Страницы:   1 2

Александр1 ©   (2004-03-10 19:02:00) 

Здравствуйте уважаемые мастера! Не подскажите, как сделать так, чтобы рисунок Image или  сома Form медленно исчезала и медленно появлялась??
Заранее спасибо!


Mihey   (2004-03-14 14:16:00) [1]

> Да кажется больше ни кто не знает!

Правильно, это ж не пиво открывать - открывашкой, ножом, ключом, об острый угол, зубами, проволокой....


Александр1   (2004-03-14 05:32:00) [2]

Да кажется больше ни кто не знает!


Александр1   (2004-03-12 12:22:00) [3]

А ещё кто-нибуть знает какойнибудь способ разрешения этого вопроса????


Mihey   (2004-03-11 20:06:00) [4]

Похоже из-за разницы версий Delphi не компилируется asm код.


Mihey   (2004-03-11 15:05:00) [5]

> И чёто он у меня не компилируется!

Какая Delphi у тебя?

> Ну а всётаки может есть у кого код как заставить работать визуальные эффекты на древних компах???

Я те дал код. Хоть у тебя не компилит, принцип то взять ты можешь? Процедура блендинга есть, как экран копировать - есть, что ещё надо?


Александр1   (2004-03-11 11:15:00) [6]

YuRock - Ну в принципи ты прав!
Ну а всётаки может есть у кого код как заставить работать визуальные эффекты на древних компах???


YuRock   (2004-03-11 10:52:00) [7]

> Александр1 ©   (11.03.04 05:25) [26]

Универсальной должна быть функциональность программы, а с визуальными эффектами можно и потерпеть на древних операционках.


Александр1   (2004-03-11 06:12:00) [8]

Mihey - Вроде пример ничего! Но действительно очень быстро! И чёто он у меня не компилируется!


Александр1   (2004-03-11 05:25:00) [9]

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


Mihey   (2004-03-11 00:49:00) [10]

В общем, решил тут для общего развития написать. Проблем никаких не было. В общем, задача полупрозрачных окон в Win 9х вполне разрешима. Вот код, там откомпилированный пример, кто хочет - качайте (322 Кб, RAR):

http://www.hot.ee/mvps16/alphaappear.rar

Для блендинга использую asm-процедуру. Походу дела, блендинг идёт даже слишком быстро (а можно было и ещё ускорить), так что надо тормозилку вставить ещё.


Mihey   (2004-03-10 23:26:00) [11]

Примеры есть, но весьма медленные.


YuRock   (2004-03-10 21:10:00) [12]

А зачем понадобились 9х? Если это коммерческая программа - то никто и не заметит, что она будет работать не так красиво, как хотел программист. Если "для себя" - вообще не вижу проблемы...


Александр1   (2004-03-10 21:02:00) [13]

Ну так чё ни у кого нет примера, "на все случаи жизни" (под win 9x? NT)????????????????


Александр1   (2004-03-10 20:52:00) [14]

Diamond Cat - Я вообще-то ещё можно так сказать не очень класный программист. Скорее начинающий. Поэтому плохо ещё во всём этом разбираюсь!
Diamond Cat -Напиши пожалуйста пример если можно или если есть готовый скинь на мыло!


Diamond Cat   (2004-03-10 20:44:00) [15]


> Александр1 ©   (10.03.04 20:38) [19]

я описал выше способ, причем я уже проходил это, и все работало под любыми виндами


Александр1   (2004-03-10 20:38:00) [16]

YuRock - Ну да точно! И чё я с начало прогнал?
YuRock - Спасибо ещё раз!
Жаль, что под win 9x не работает.
А других каких нибуть методов не кто не знает, чтобы под win 9x работало???

И чё Microsoft так поздно догадался изобрести SetLayeredWindowAttributes?


Diamond Cat   (2004-03-10 20:26:00) [17]

Win nt тоже не сработает только 2000 и выше


YuRock   (2004-03-10 20:25:00) [18]

> Александр1

> я тоже так подумал! И сделал так!

Надо было не поменять местами 100 и 255 а добавить еще один цикл! Т.е.

for j := 255 downto 100 do begin
 SetLayeredWindowAttributes(Handle, $00FFFFFF, j, LWA_ALPHA);
 Sleep(1);
end;

заменить на

for j := 255 downto 100 do begin
 SetLayeredWindowAttributes(Handle, $00FFFFFF, j, LWA_ALPHA);
 Sleep(1);
end;
for j := 100 to 255 do begin
 SetLayeredWindowAttributes(Handle, $00FFFFFF, j, LWA_ALPHA);
 Sleep(1);
end;


> в смысле не универсален, чё только под WinNT, 2000 XP сгодится?

Не только. А только для 2k/XP/03. В предыдущих версиях Windows ф-ции SetLayeredWindowAttributes не было.


Александр1   (2004-03-10 20:19:00) [19]

Diamond Cat - в смысле не универсален, чё только под WinNT, 2000 XP сгодится???


Александр1   (2004-03-10 20:16:00) [20]

YuRock - я тоже так подумал! И сделал так!
Но назад то оно не работает!
Ну хоть в перёд и то хлеб!

procedure TForm1.Button1Click(Sender: TObject);
var
j: Integer;
begin
for j := 100 downto 255 do begin
  SetLayeredWindowAttributes(Handle, $00FFFFFF, j, LWA_ALPHA);
  Sleep(1);
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, $00FFFFFF, 100, LWA_ALPHA);
end;


Страницы:   1 2

Наверх

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