本例效果图:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormPaint(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormPaint(Sender: TObject); const n = 50; var Rgn: HRGN; x1,y1,x2,y2: Integer; begin x1 := n; y1 := n div 2; x2 := ClientWidth - n; y2 := ClientHeight - n; {建立椭圆区域} // Rgn := CreateEllipticRgn(x1, y1, x2, y2); Rgn := CreateEllipticRgnIndirect(Rect(x1,y1,x2,y2)); {目的同上一行, 函数不同} {填充区域} Canvas.Brush.Color := clSilver; Canvas.Brush.Style := bsCross; FillRgn(Canvas.Handle, Rgn, Canvas.Brush.Handle); {绘制区域边界} Canvas.Brush.Color := clRed; Canvas.Brush.Style := bsSolid; FrameRgn(Canvas.Handle, Rgn, Canvas.Brush.Handle, 2, 2); DeleteObject(Rgn); end; end.