本例效果圖:
代碼文件:unit Unit1;
窗體文件:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses GDIPOBJ, GDIPAPI;
procedure TForm1.FormPaint(Sender: TObject);
var
g: TGPGraphics;
b: TGPSolidBrush;
path: TGPGraphicsPath;
rgn: TGPRegion;
Matrix: TGPMatrix;
RectCount: Integer;
rts: array of TGPRect;
i: Integer;
begin
g := TGPGraphics.Create(Canvas.Handle);
b := TGPSolidBrush.Create(MakeColor(50, 0, 0, 255));
path := TGPGraphicsPath.Create;
path.AddEllipse(MakeRect(20, 10, ClientWidth-40, ClIEntHeight-20));
rgn := TGPRegion.Create(path);
Matrix := TGPMatrix.Create; {它在本例中只是個擺設, 因為參選需要}
RectCount := rgn.GetRegionScansCount(Matrix);
SetLength(rts, RectCount);
rgn.GetRegionScans(Matrix, PGPRect(rts), RectCount);
Randomize;
for i := 0 to RectCount - 1 do
begin
b.SetColor(ColorRefToARGB(Random($FFFFFF)));
g.FillRectangle(b, rts[i]);
end;
Matrix.Free;
rgn.Free;
path.Free;
b.Free;
g.Free;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
Repaint;
end;
end.object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClIEntHeight = 217
ClIEntWidth = 219
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
OnClick = FormClick
OnPaint = FormPaint
PixelsPerInch = 96
TextHeight = 13
end