|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Плавность и прозрачность
Человеки! Как с помошью параметров AlphaBlend и AlphaBlendValue заставить форму плавно появиться? Приветствуются все самые разные предложения.
|
#2
|
||||
|
||||
тебе нужно юзать таймеры(один для увеличения прозрачности, другой для уменьшения), которые будут изменять глобальную переменную прозрачности и присваивать ее значение AlphaBlendValue
|
#3
|
|||
|
|||
Ну а как код выглядеть то будет. Если не сложно , напишите.
|
#4
|
||||
|
||||
вот мой код для уменьшения прозрачности:
Код:
procedure TForm1.DisAppearTimerTimer(Sender: TObject); begin dec(trans,(255-AlphaV) div 15); //trans-глобальная переменная типа byte. div 15 не обязательно-у меня это для скорости Form1.AlphaBlendValue := trans; //в AlphaV хранится нужное значение прозрачности if ali>AlphaV then //если текущая прозрачность меньше нужной exit; //то выходим trans := AlphaV; //на всякий случай Form1.AlphaBlendValue := trans; DisAppearTimer.Enabled:=false; //все уже сделано. вырубаем end; end; Код:
procedure TForm1.AppearTimerTimer(Sender: TObject); begin if (trans<255)And not(DisAppearTimer.Enabled) then //если не сделать проверку то будет нехорошо begin inc(trans,(255-AlphaV) div 15); Form1.AlphaBlendValue := trans; end; if trans<255then exit; trans:=255; Form1.AlphaBlendValue := 255; AppearTimer.Enabled:=false; end; Код:
procedure TForm1.AppActivate(Sender: TObject); begin Form1.AppearTimer.Enabled:=True; end; procedure TForm1.AppDeactivate(Sender: TObject); begin Form1.DisAppearTimer.Enabled:=True; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnActivate := AppActivate; //присваиваем процедуры проге Application.OnDeActivate := AppDeactivate; end; //ИЛИ procedure TForm1.FormShow(Sender: TObject); begin Form1.AppearTimer.Enabled:=True; end; |
#5
|
|||
|
|||
Спасибо KOOL.Очень помог.Обязательно оставлю отзыв!
|
#6
|
|||
|
|||
KOOL , ОН пишет ошибку Undeclared identifier: AlphaV. Че делать?
|
#7
|
||||
|
||||
AlphaV тоже надо было указать в глобальных переменных, желательно в Public формы(для опций)
|
#8
|
|||
|
|||
Спасибо, теперь все работает.
|
#9
|
|||
|
|||
Жаль, что сначала происходит перерисовка окна, т.е. окно сначала появляется и тут же начинает плавно снова появляться. Это никак нельзя обойти.
|
#10
|
||||
|
||||
можно у формы сделать AlphaBlendValue по умолчанию равным 0 и будет норм.
З.Ы. C AlphaSkins не заработает |
#11
|
|||
|
|||
Теперь все выглядит на 5. Вообще прикольно! Спасибо , что помог.
|
#12
|
||||
|
||||
А так не проще?..
появляется... Код:
procedure TForm1.FormActivate(Sender: TObject); var i: Integer; begin for i:=0 to 255 do begin Form1.AlphaBlendValue:=i; Sleep(1); Application.ProcessMessages; end; end; ...исчезает. Код:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var i: Integer; begin for i:=255 downto 0 do begin Form1.AlphaBlendValue:=i; Sleep(1); Application.ProcessMessages; end; end; Последний раз редактировалось AXS, 02.04.2008 в 20:50. |