原程序如下:
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var
Fsurface:TDirectDrawSurface;
begin
if not DXDraw1.CanDraw then Exit;
DXDRAW1.Surface.Fill(0);
TT:=TDIB.Create;
Fsurface:=TDirectDrawSurface.Create(DXDraw1.DDraw);
try
TT.LoadFromFile('C:\1.BMP');//1.bmp的width=300,height=300;
with TT.Canvas do
begin
Brush.Style:=bsClear;
Font.Color:=clLime;
Font.Size:=12;
TextOut(x+1,2,'中国');
if x>100 then
x:=2;
end;
Fsurface.LoadFromGraphic(TT);
DXDraw1.Surface.Draw(0,0,Fsurface.ClientRect,Fsurface,false);
DXDraw1.Flip;
finally
tt.Free;
Fsurface.Free;
Fsurface:=nil;
end;end;//(DXDraw1:640*480*16) 变量X是在CREATE中外部生成的.程序编译通过,运行时也不报错,但得不到正确的结果!
正确的结果本应是“中国”两个字在1.bmp图片上走,但
实际的结果却是静止不动!
问题:大家从程序中可以看到,我的 副Surface 是动态生成映射到 主Surface 的,然后在动态Free的,为什么 主Surface 中只得到第一次循环(DXTimer)的结果呢?
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var
Fsurface:TDirectDrawSurface;
begin
if not DXDraw1.CanDraw then Exit;
DXDRAW1.Surface.Fill(0);
TT:=TDIB.Create;
Fsurface:=TDirectDrawSurface.Create(DXDraw1.DDraw);
try
TT.LoadFromFile('C:\1.BMP');//1.bmp的width=300,height=300;
with TT.Canvas do
begin
Brush.Style:=bsClear;
Font.Color:=clLime;
Font.Size:=12;
TextOut(x+1,2,'中国');
if x>100 then
x:=2;
end;
Fsurface.LoadFromGraphic(TT);
DXDraw1.Surface.Draw(0,0,Fsurface.ClientRect,Fsurface,false);
DXDraw1.Flip;
finally
tt.Free;
Fsurface.Free;
Fsurface:=nil;
end;end;//(DXDraw1:640*480*16) 变量X是在CREATE中外部生成的.程序编译通过,运行时也不报错,但得不到正确的结果!
正确的结果本应是“中国”两个字在1.bmp图片上走,但
实际的结果却是静止不动!
问题:大家从程序中可以看到,我的 副Surface 是动态生成映射到 主Surface 的,然后在动态Free的,为什么 主Surface 中只得到第一次循环(DXTimer)的结果呢?
解决方案 »
- ActiveX控件自动安装的问题
- 主框架程序如何动态关联各个子模块?
- 申请辞去delphi 语言基础/算法/系统设计与非技术区 版主
- 宝烂公司光卖一堆原码有什么用,他厉害的话把DELPHI开发小组和DELPHI产品一起卖了三,或许这样还可以多得几个子儿。
- 如何截取声音信号?
- 哪位用过Fthlib这个控件?(200分)
- 關於:while的一個問題,請進入。在線。。。。。。
- 高分求助!!!关于ADO连接SQL SERVER的问题
- 我在专家门诊Delphi DataBase提出的问题
- 如何在statusbar上显示系统日期与时间
- 求助,delphi的procedure过程中间可以退出本过程吗?
- XML
原程序如下:
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var
Fsurface:TDirectDrawSurface;
begin
if not DXDraw1.CanDraw then Exit;
DXDRAW1.Surface.Fill(0);
TT:=TDIB.Create;
Fsurface:=TDirectDrawSurface.Create(DXDraw1.DDraw);
try
TT.LoadFromFile('C:\1.BMP');//1.bmp的width=300,height=300;
with TT.Canvas do
begin
Brush.Style:=bsClear;
Font.Color:=clLime;
Font.Size:=12;
TextOut(x+1,2,'中国');
x:=x+1;
if x>100 then
x:=2;
end;
Fsurface.LoadFromGraphic(TT);
DXDraw1.Surface.Draw(0,0,Fsurface.ClientRect,Fsurface,false);
DXDraw1.Flip;
finally
tt.Free;
Fsurface.Free;
Fsurface:=nil;
end; end; //(DXDraw1:640*480*16) 变量X是在CREATE中外部生成的. 程序编译通过,运行时也不报错,但得不到正确的结果!
正确的结果本应是“中国”两个字在1.bmp图片上走,但
实际的结果却是静止不动!
问题:大家从程序中可以看到,我的 副Surface 是动态生成映射到 主Surface 的,然后在动态Free的,为什么 主Surface 中只得到第一次循环(DXTimer)的结果呢?