In this example:
Code File:
Unit unit1; interfaceuses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs; Type tform1 = Class (tform) Procedure formpaint (Sender: tobject ); procedure formmousedown (Sender: tobject; button: tmousebutton; shift: tshiftstate; X, Y: integer); Procedure formmousemove (Sender: tobject; shift: tshiftstate; X, Y: integer ); procedure formmouseup (Sender: tobject; button: tmousebutton; shift: tshiftstate; X, Y: integer); end; var form1: tform1; implementation {$ R *. DFM} uses gdipobj, gdipapi; var PTS: array [0 .. 3] of tgppoint = (X: 30; Y: 100), (X: 120; Y: 10), (X: 170; Y: 150), (X: 220; Y: 100); PTN: integer =-1; F: Boolean; Procedure tform1.formpaint (Sender: tobject); var G: tgpgraphics; P: tgppen; I: integer; begin G: = tgpgraphics. create (canvas. handle); P: = tgppen. create (aclred, 1); G. clear (aclwhite); G. drawbezr (p, PTS [0], PTS [1], PTS [2], PTS [3]); p. setcolor (aclblue); for I: = 0 to 3 Do g. drawrectangle (p, makerect (rect (PTS [I]. x-2 (PTS [I]. y-2 (PTS [I]. X + 2, PTS [I]. Y + 2); G. free; p. free; end; Procedure tform1.formmousedown (Sender: tobject; button: tmousebutton; shift: tshiftstate; X, Y: integer); begin F: = true; end; Procedure tform1.formmousemove (Sender: tobject; shift: tshiftstate; X, Y: integer); var R: trect; I: integer; begin if F then begin if PTN =-1 then exit; PTS [PTN]. x: = x; PTS [PTN]. y: = y; repaint; end else begin PTN: =-1; for I: = 0 to 3 do Begin R: = rect (PTS [I]. x-2 (PTS [I]. y-2 (PTS [I]. X + 2, PTS [I]. Y + 2); If ptinrect (R, point (x, y) Then PTN: = I; end; Procedure tform1.formmouseup (Sender: tobject; button: tmousebutton; shift: tshiftstate; X, Y: integer); begin F: = false; end.
Form file:
Object form1: tform1 left = 0 Top = 0 caption = 'form1' clientheight = 188 clientwidth = 254 color = clbtnface font. charset = default_charset font. color = clwindowtext font. height =-11 font. name = 'tahoma 'font. style = [] oldcreateorder = false position = podesktopcenter onmousedown = formmousedown onmousemove = formmousemove onmouseup = formmouseup onpaint = formpaint pixelsperinch = 96 textheight = 13end