对齐到网格

var iGridSize : Integer = 16; procedure TForm1.FormPaint(Sender: TObject); var i, j : integer; begin Self.DoubleBuffered := True; for i := 0 to Self.Width do for j := 0 to Self.Height do if (j mod iGridSize = 0) and (i mod iGridSize = 0) then Self.Canvas.Pixels[i, j] := clNavy; end; procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin Self.iOldX := X; Self.iOldY := Y; end; end; procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin Shape1.Left := Shape1.Left + X - iOldX; Shape1.Top := Shape1.Top + Y - iOldY; end; end; procedure TForm1.Shape1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin if (Shape1.Left - (Shape1.Left div iGridSize) * iGridSize) > (iGridSize div 2) then begin Shape1.Left := (Shape1.Left div iGridSize) * iGridSize + iGridSize; end else begin Shape1.Left := (Shape1.Left div iGridSize) * iGridSize; end; if (Shape1.Top - (Shape1.Top div iGridSize) * iGridSize) > (iGridSize div 2) then begin Shape1.Top := (Shape1.Top div iGridSize) * iGridSize + iGridSize; end else begin Shape1.Top := (Shape1.Top div iGridSize) * iGridSize; end; end; end;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值