![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исчезающий Image [D5, D7, Win95/98, WinXP]
Александр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;