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

  • A+
所属分类:[开发技巧]
  1. TDirectDrawSurface.PokeLine();  
  2. TDirectDrawSurface.PokeLinePolar();  
  3. TDirectDrawSurface.PokeBox();  
  4. TDirectDrawSurface.PokeBlendPixel();  
  5. TDirectDrawSurface.PokeCircle();  
  6. TDirectDrawSurface.PokeEllipse();  
  7. TDirectDrawSurface.PokeFilledEllipse();  
  8. TDirectDrawSurface.PokeWuLine();  
  9. TDirectDrawSurface.PokeVLine();  
  10. TDirectDrawSurface.DoRotate();  

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

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

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

代码文件:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
DXDraw1: TDXDraw;
DXTimer1: TDXTimer;
procedure FormCreate(Sender: TObject);
procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

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.Lock;
DXDraw1.Surface.PokeLine(x1,y1,x2,y2,clr);
DXDraw1.Surface.UnLock;
DXDraw1.Flip;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DXDraw1.Align := alClient;
DXTimer1.Interval := 50;
end;

end.
下载文件:

 

200902111441360106.rar

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

发表评论

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