为什么80%的码农都做不了架构师?>>>
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs;typeTForm1 = class(TForm)procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);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;varForm1: TForm1;implementation{$R *.dfm}varRgn: HRGN;f: Boolean;x1,y1: Integer;procedure TForm1.FormCreate(Sender: TObject);
beginRgn := CreateEllipticRgn(11, 11, 111, 66);DoubleBuffered := True; {可以使用双倍缓存来禁止闪烁}
end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
beginif PtInRegion(Rgn, X, Y) then {判断鼠标当前点是否在区域内}beginf := True;x1 := X;y1 := y;end;
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
beginif not f then Exit;OffsetRgn(Rgn, X-x1, Y-y1); {移动区域}Repaint;x1 := X;y1 := y;
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
beginf := False;
end;procedure TForm1.FormPaint(Sender: TObject);
beginCanvas.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);
end;procedure TForm1.FormDestroy(Sender: TObject);
beginDeleteObject(Rgn);
end;end.