程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 與 DirectX 之 DelphiX(24): TDirectDrawSurface.Blt()、BltFast();

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

編輯:Delphi

這兩個函數可不是一般的麻煩, 特別是 Blt(); 暫時搞不徹底, 這是初步嘗試的例子:

  代碼文件:

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DXDraws, StdCtrls, DirectX;
type
 TForm1 = class(TForm)
  DXDraw1: TDXDraw;
  Button1: TButton;
  Button2: TButton;
  procedure Button1Click(Sender: TObject);
  procedure Button2Click(Sender: TObject);
 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.


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved