TDirectDrawSurface.Fill(); TDirectDrawSurface.FillRect(); TDirectDrawSurface.FillRectAlpha(); TDirectDrawSurface.FillRectAdd(); TDirectDrawSurface.FillRectSub(); 其中 Fill 在前面每个例子中都有用到; 另外注意: 这几个函数中的颜色格式有点乱: Fill 与 FillRect 使用的是非 Delphi 的颜色格式, 它们使用的红色应该是: $FF0000; FillRectAlpha、FillRectAdd、FillRectSub 可以使用 Delphi 的颜色, 红色可以是: $0000FF 或 clRed.
本例效果图:
代码文件:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DXDraws, StdCtrls; type TForm1 = class(TForm) DXDraw1: TDXDraw; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} const ImgPath1 = 'C:\Temp\Test.jpg'; procedure TForm1.Button1Click(Sender: TObject); var MySurface: TDirectDrawSurface; begin MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw); MySurface.LoadFromFile(ImgPath1); DXDraw1.Surface.Fill(0); DXDraw1.Surface.Draw(0, 0, MySurface); DXDraw1.Flip; FreeAndNil(MySurface); end; procedure TForm1.Button2Click(Sender: TObject); var MySurface: TDirectDrawSurface; r: TRect; begin MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw); MySurface.LoadFromFile(ImgPath1); DXDraw1.Surface.Fill(0); DXDraw1.Surface.Draw(0, 0, MySurface); r := Bounds(10, 10, DXDraw1.Width - 20, DXDraw1.Height - 20); DXDraw1.Surface.FillRect(r, $FF0000); DXDraw1.Flip; FreeAndNil(MySurface); end; procedure TForm1.Button3Click(Sender: TObject); var MySurface: TDirectDrawSurface; r: TRect; begin MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw); MySurface.LoadFromFile(ImgPath1); DXDraw1.Surface.Fill(0); DXDraw1.Surface.Draw(0, 0, MySurface); r := Bounds(10, 10, DXDraw1.Width - 20, DXDraw1.Height - 20); DXDraw1.Surface.FillRectAlpha(r, $0000FF, 128); DXDraw1.Flip; FreeAndNil(MySurface); end; procedure TForm1.Button4Click(Sender: TObject); var MySurface: TDirectDrawSurface; r: TRect; begin MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw); MySurface.LoadFromFile(ImgPath1); DXDraw1.Surface.Fill(0); DXDraw1.Surface.Draw(0, 0, MySurface); r := Bounds(10, 10, DXDraw1.Width - 20, DXDraw1.Height - 20); DXDraw1.Surface.FillRectAdd(r, $0000FF, 255); DXDraw1.Flip; FreeAndNil(MySurface); end; procedure TForm1.Button5Click(Sender: TObject); var MySurface: TDirectDrawSurface; r: TRect; begin MySurface := TDirectDrawSurface.Create(DXDraw1.DDraw); MySurface.LoadFromFile(ImgPath1); DXDraw1.Surface.Fill(0); DXDraw1.Surface.Draw(0, 0, MySurface); r := Bounds(10, 10, DXDraw1.Width - 20, DXDraw1.Height - 20); DXDraw1.Surface.FillRectSub(r, $0000FF, 255); DXDraw1.Flip; FreeAndNil(MySurface); end; procedure TForm1.FormCreate(Sender: TObject); begin Button1.Caption := '原始图片'; Button2.Caption := 'FillRect'; Button3.Caption := 'FillRectAlpha'; Button4.Caption := 'FillRectAdd'; Button5.Caption := 'FillRectSub'; end; end.