In this example:
Unit unit1; interfaceuses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, stdctrls; Type tform1 = Class (tform) button1: tbutton; button2: tbutton; procedure alert (Sender: tobject); Procedure button2click (Sender: tobject ); end; var form1: tform1; implementation {$ R *. DFM} const boolstr: array [Boolean] of string = ('rectangle not in the region', 'rectangle in the region'); var RGN: hrgn; rect: trect; procedure tform1.formcreate (Sender: tobject); const n = 50; var X1, Y1, X2, Y2: integer; begin X1: = N; Y1: = N Div 2; X2: = clientwidth-N; Y2: = clientheight-N; RGN: = createellipticrgn (x1, Y1, X2, Y2); rect: = bounds (10, 10, 10); end; procedure extract (Sender: tobject); begin offsetrect (rect, 10, 6); repaint; text: = boolstr [rectinregion (RGN, rect)]; end; Procedure tform1.button2click (Sender: tobject); begin offsetrect (rect,-10,-6); repaint; text: = boolstr [rectinregion (RGN, rect)]; end; Procedure tform1.formpaint (Sender: tobject ); begin 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); fillrect (canvas. handle, rect, canvas. brush. handle); end; Procedure tform1.formdestroy (Sender: tobject); begin deleteobject (RGN); end.