Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Плавная отрисовка формы


Автор: Ramzes_ 4.1.2007, 00:40
Здравствуйте!
Задача следующая:
- необходимо заставить форму появиться медленно - то есть из прозрачного оно должно плавно стать непрозрачным.
  Пробывал следующий код :

Код

var 
  i, cavb : 0..255; 
begin 
  if AlphaBlend=False then 
  begin 
    AlphaBlendValue:=0; 
    AlphaBlend:=True; 
  end; 
  cavb:=AlphaBlendValue; 

  for i := cavb to 255 do 
  begin 
    AlphaBlendValue := i; 
    Application.ProcessMessages; 
  end; 
end; 


Но ничего не выходит - форма сразу становится в  AlphaBlendValue:=255;
Помогите решить задачу. Заранее спасибо.

Автор: Snowy 4.1.2007, 00:57
Код
  AnimateWindow(Handle, 500, AW_BLEND);

Автор: Ramzes_ 4.1.2007, 15:47
Спасибо Уважаемый Snowy - то что нужно.
Объясните, почему в моем примере не выходит также???

Автор: anwe 4.1.2007, 21:57
Код, вобщем-то верный. Наверное, у тебя изначально в инспекторе объектов стоит AlphaBlend->True и AlphaBlendValue->255 (как установленные по умолчанию в новом проекте). Тогда строки 6 и 7 твоего кода обходятся.

Автор: Snowy 5.1.2007, 00:06
Цитата(Ramzes_ @  4.1.2007,  15:47 Найти цитируемый пост)
Спасибо Уважаемый Snowy - то что нужно.
Естественно.
Всё уже придумано.

Цитата(Ramzes_ @  4.1.2007,  15:47 Найти цитируемый пост)
Объясните, почему в моем примере не выходит также???
Твой пример вполне рабочий.
Вероятно используешь какую-то скиновую библиотеку, которая мешает менять канал.

Автор: Ramzes_ 5.1.2007, 20:20
Никакую скиновую библиотеку я не использую - обычная виндовая форма.
Но почему-то не работает.
Подскажите пожалуйста почему?
И выложите пожалуйста пример, если получится!

Автор: anwe 5.1.2007, 22:19
Ramzes_, тебе же двое сказали: код рабочий. Изначально поставь AlphaBlend->False.

Автор: Ramzes_ 7.1.2007, 01:26
anwe, - я наверное уже перепробывал и читать вроде умею, что люди пишутsmile)
Хоть AlphaBlend:=False, хоть AlphaBlend:=true все равно форма появляется сразу.
Так что пробуй у себя... а потом выкладывай что получилось.

Автор: anwe 7.1.2007, 21:31
Цитата(Ramzes_ @  7.1.2007,  00:26 Найти цитируемый пост)
Так что пробуй у себя... а потом выкладывай что получилось. 

Ну так и делал. Только делал это по нажатию кнопки.
У меня получилось. smile 

Автор: Ramzes_ 9.1.2007, 13:43
Короче выяснил я почему у меня при создании формы - оная появлялась сразу - надо было записать вышеназванную процедуру в OnPaint-тогда все получается.
Тема закрыта!
Всем спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)