Delphi 与 DirectX 之 DelphiX(24): TDirectDrawSurface.Blt()、BltFast();

  • A+
所属分类:[开发技巧]

这两个函数可不是一般的麻烦, 特别是 Blt(); 暂时搞不彻底,

这是照着万一老师的教材尝试的例子,我选用的图片太小,button2的实现的时候没有效果.

万一老师的显示效果:

程序文件:

unit Unit1;

interface

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

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:\Temp\DelphiX.bmp' ;
  ImgPath2 = 'C:\Temp\Test.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.
文件下载:

200902111633087140.rar

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
广告也精彩
avatar
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: