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 之间, 后者又不能锁定, 真是不完善.
本例只是个画线的例子, 运行效果图:
代码文件:
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.