本例效果图:

代码文件:

代码文件:
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
浙公网安备 33010602011771号