Форум: "Media";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
Внизработа с графикой Найти похожие ветки
← →
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 вся ветка
Форум: "Media";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.052 c