procedure TForm1.Button1Click(Sender: TObject); var i:integer; var Str:String; begin Str:='Hello'; For i:=1 to 5 do begin Form1.Canvas.Font.Color:=RGB(10,100,50+20*i); Form1.Canvas.TextOut(10+10*i,10,Str[i]); end; end;//这个实现一串字从左到右,颜色变化。 在配合timer,效果应该不错。实际上Label也是画上去的。
1stclass孔件 可以做出好多类似的效果
我试着用循环加sleep控制label的字体颜色,但是有一点闪烁,怎么办?
是不是纯文本的东西?可不可以不用label,下面外观效果一样。 而且补闪烁。 var Bitmap:TBitmap; var i:integer; begin i:=1; Bitmap:=TBitmap.Create; Bitmap.TransparentColor:=clwhite; Bitmap.Transparent:=True; Bitmap.Width:=100; Bitmap.Height:=50; While i<120 do begin Bitmap.Canvas.Font.Color:=Rgb(i*2,i*2,i*2); Bitmap.Canvas.TextOut(0,0,'Hello'); Form1.Canvas.Draw(10,10,Bitmap); Sleep(100); i:=i+1; end; ShowMessage('Hello'); end;
更好的方法是自己把文字给画上去Canvas.TextOut
比如说自画上一个字的时候,变换一下颜色,就可以实现一串文字从左到右颜色的渐变。
var i:integer;
var Str:String;
begin
Str:='Hello';
For i:=1 to 5 do
begin
Form1.Canvas.Font.Color:=RGB(10,100,50+20*i);
Form1.Canvas.TextOut(10+10*i,10,Str[i]);
end;
end;//这个实现一串字从左到右,颜色变化。
在配合timer,效果应该不错。实际上Label也是画上去的。
可以做出好多类似的效果
而且补闪烁。
var Bitmap:TBitmap;
var i:integer;
begin
i:=1;
Bitmap:=TBitmap.Create;
Bitmap.TransparentColor:=clwhite;
Bitmap.Transparent:=True;
Bitmap.Width:=100;
Bitmap.Height:=50;
While i<120 do
begin
Bitmap.Canvas.Font.Color:=Rgb(i*2,i*2,i*2);
Bitmap.Canvas.TextOut(0,0,'Hello');
Form1.Canvas.Draw(10,10,Bitmap);
Sleep(100);
i:=i+1;
end;
ShowMessage('Hello');
end;