如何实现文字在固定背景图片上滚动?(100分)

  • 主题发起人 主题发起人 netis
  • 开始时间 开始时间
加一个时钟控件,按每毫秒移动x.y值。
 
我们的例子可以也给我一份吗,谢谢了!

139634@21cn.com
 
打一个可以贴图的TMemo,让它里面的字滚动,如不就行了吗?
有这种TMemo的,我以前用过。
 
我也想写一个这样的程序,试过用Label + Timer 可以实现,但闪烁会很严重,不自然,
效果很差。现在想用Form->CANVAS->textrect来实现(通过修改x,y值),但不知道如何把
指定矩形拷贝,再重新覆盖输出文字。

如果有例子给我一份好吗?(zqzwc@yeah.net)
 
试试吧,效果还可以。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
Button1: TButton;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure PaintBox1Paint(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
BMP,Buf : TBitmap;
PP : TPoint;
Text : String;
SS : TSize;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
PP := Point(10,10);
BMP := TBitMap.Create;
Buf := TBitmap.Create;
BMP.LoadFromFile('c:/1.bmp');
Buf.Width := BMP.Width;
Buf.Height := BMP.height;
Buf.Canvas.Draw(0,0,BMP);
with Buf.Canvas do begin
Font.Color := clRed;
Font.Name := '宋体';
Font.Size := 20;
Brush.Style := bsClear;
end;
Text := '大富翁论坛欢迎大家!';

SS := Buf.Canvas.TextExtent(Text);
PaintBox1.Canvas.CopyMode := cmSrcCopy ;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
BMP.Free;
Buf.Free;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
PaintBox1.Canvas.Draw(0,0,Buf);
// PaintBox1.Canvas.CopyRect(RECT(PP.X,PP.Y,PP.X + SS.cx,PP.Y + SS.cy),Buf.Canvas,RECT(PP.X,PP.Y,PP.X + SS.cx,PP.Y + SS.cy));
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Buf.Canvas.CopyRect(RECT(PP.X,PP.Y,PP.X + SS.cx,PP.Y + SS.cy),BMP.Canvas,RECT(PP.X,PP.Y,PP.X + SS.cx,PP.Y + SS.cy));
Inc(PP.X);
Buf.Canvas.TextOut(PP.X,PP.Y,Text);
PaintBox1.Refresh;
end;

end.
 
接受答案了.
 
后退
顶部