Delphi 与 DirectX 之 DelphiX(21): TDirectDrawSurface 的绘图命令



TDirectDrawSurface.PokeLine();

TDirectDrawSurface.PokeLinePolar();

TDirectDrawSurface.PokeBox();

TDirectDrawSurface.PokeBlendPixel();

TDirectDrawSurface.PokeCircle();

TDirectDrawSurface.PokeEllipse();

TDirectDrawSurface.PokeFilledEllipse();

TDirectDrawSurface.PokeWuLine();

TDirectDrawSurface.PokeVLine();

TDirectDrawSurface.DoRotate();


 
   

这些绘图命令都需要在 TDirectDrawSurface.Lock 和 TDirectDrawSurface.UnLock 之间进行, 并不是特别好用.

另外还有两个读写属性: Pixel 和 Pixels, 绘制时前者须在 Lock、UnLock 之间, 后者又不能锁定, 真是不完善.

本例只是个画线的例子, 运行效果图:

Delphi 与 DirectX 之 DelphiX(21): TDirectDrawSurface 的绘图命令

代码文件:

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, DXClass, DXDraws;



type

  TForm1 = class(TForm)

    DXDraw1: TDXDraw;

    DXTimer1: TDXTimer;

    procedure FormCreate(Sender: TObject);

    procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);

begin

  DXDraw1.Align := alClient;

  DXTimer1.Interval := 50;

end;



procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);

var

  x1,y1,x2,y2: Integer;

  clr: TColor;

begin

  x1 := Random(DXDraw1.Surface.Width);

  y1 := Random(DXDraw1.Surface.Height);

  x2 := Random(DXDraw1.Surface.Width);

  y2 := Random(DXDraw1.Surface.Height);

  clr := Random($FFFFFF);



//  DXDraw1.Surface.Fill(0);

  DXDraw1.Surface.Lock;

  DXDraw1.Surface.PokeLine(x1, y1, x2, y2, clr);

  DXDraw1.Surface.UnLock;

  DXDraw1.Flip;

end;



end.


 
   

你可能感兴趣的:(Delphi)