这两个函数可不是一般的麻烦, 特别是 Blt(); 暂时搞不彻底,
这是照着万一老师的教材尝试的例子,我选用的图片太小,button2的实现的时候没有效果.
万一老师的显示效果:

程序文件:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DXDraws,DirectX;
type
TForm1 = class(TForm)
DXDraw1: TDXDraw;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
ImgPath1 = 'C:TempDelphiX.bmp' ;
ImgPath2 = 'C:TempTest.bmp' ;
procedure TForm1.Button1Click(Sender: TObject);
var
MySurface: TDirectDrawSurface;
DF: TDDBltFX;
begin
MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
MySurface.LoadFromFile(ImgPath1);
DXDraw1.Surface.LoadFromFile(ImgPath2);
DF.dwSize := SizeOf(DF);
DF.DwDDFX := 0 ;
DXDraw1.Surface.Blt(Rect(0,0,MySurface.Width div 2, MySurface.Height div 2),
MySurface.ClientRect,
DDBLT_KEYSRC or DDBLT_WAIT,
DF,
MySurface) ;
DXDraw1.Flip;
FreeAndNil(MySurface);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
MySurface: TDirectDrawSurface;
begin
MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
MySurface.LoadFromFile(ImgPath1);
DXDraw1.Surface.LoadFromFile(ImgPath2);
DXDraw1.Surface.BltFast(0,0,Bounds(16,4,Trunc(MySurface.Width * 0.9),Trunc(MySurface.Height * 0.9)),
DDBLTFAST_SRCCOLORKEY or DDBLTFAST_WAIT,MySurface);
DXDraw1.Flip;
FreeAndNil(MySurface);
end;
end.
文件下载:




