Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

работа с графикой   Найти похожие ветки 

 
efremovnd   (2007-01-22 12:29) [0]

Требуется за заданное время(секунды) плавно залить каким-то цветом объект (панель, прямоугольник). Как проще это сделать?


 
TRUNK ©   (2007-01-22 17:55) [1]

Можно попробовать так:

TForm1 = class(TForm)
 //.............................
private
 //.............................
 FTimerID: Cardinal;
 FTimeCounter: Cardinal;
 FTimeMaxCount: Cardinal;
protected
 procedure WMTimer(var Message: TMessage); message WM_TIMER;
public
 //.............................
 procedure FillSmoothly(Time_ms: Cardinal);
end;

//.............................

procedure TForm1.FillSmoothly(Time_ms: Cardinal);
begin
FTimerID := SetTimer(Self.Handle,FTimerID,100,nil);
FTimeMaxCount := Time_ms div 100;
FTimeCounter := 0;
Panel1.Color := 0;
end;

procedure TForm1.WMTimer(var Message: TMessage);
var
k: Double;
R,G,B: Byte;
begin
FTimeCounter := FTimeCounter + 1;
k := FTimeCounter/FTimeMaxCount;
R := trunc(100*k);
G := trunc(255*k);
B := trunc(120*k);
Panel1.Color := (B shl 16)or(G shl 8)or R;
if (FTimeCounter = FTimeMaxCount) then
 KillTimer(Self.Handle,FTimerID);
inherited;
end;



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.022 c
1-1188223761
DevilDevil
2007-08-27 18:09
2007.11.18
WMNCHITTEST и HTCAPTION


15-1192221654
Petr V. Abramov
2007-10-13 00:40
2007.11.18
Каковы перспективы Mono?


1-1188367751
elserpiente
2007-08-29 10:09
2007.11.18
Просмотреть имя пользовотеля в ODBS DSN


6-1173849435
paradox01
2007-03-14 08:17
2007.11.18
Сервер-клиент прием-передача


15-1192555640
Galinka
2007-10-16 21:27
2007.11.18
CORBA: книги