Delphi中如何让鼠标在画好的栅格中单位移动(类似CAD中的栅格自动捕获) ( 积分: 200 )

  • 主题发起人 主题发起人 ccccjun
  • 开始时间 开始时间
C

ccccjun

Unregistered / Unconfirmed
GUEST, unregistred user!
[red]
我想让鼠标在image的画布上按照画好的栅格上移动,并自动捕获栅格上的节点
类似Auto CAD中的栅格捕获功能
Delphi 的Form设计时Form上的网格的功能?

我在image的OnMouserMove时间中加入下列代码;
lx:网格列宽
hy:网格行宽

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
pt:TPoint;
dx,dy:integer;
begin
if sflag then
begin
GetCursorPos(pt);
dx:=Trunc((X/lx+0.5)*lx-X);
dy:=Trunc((Y/hy+0.5)*hy-Y);
if (dx<>0) and (dy<>0) then
SetCursorPos(pt.x + dx, pt.y + dy);
SetCapture(Handle);
end;
end;

但是鼠标不能自动定位到网格的节点上
请各位大人不吝赐教
[/red]
 
[red]
我想让鼠标在image的画布上按照画好的栅格上移动,并自动捕获栅格上的节点
类似Auto CAD中的栅格捕获功能
Delphi 的Form设计时Form上的网格的功能?

我在image的OnMouserMove时间中加入下列代码;
lx:网格列宽
hy:网格行宽

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
pt:TPoint;
dx,dy:integer;
begin
if sflag then
begin
GetCursorPos(pt);
dx:=Trunc((X/lx+0.5)*lx-X);
dy:=Trunc((Y/hy+0.5)*hy-Y);
if (dx<>0) and (dy<>0) then
SetCursorPos(pt.x + dx, pt.y + dy);
SetCapture(Handle);
end;
end;

但是鼠标不能自动定位到网格的节点上
请各位大人不吝赐教
[/red]
 
[red]我已经自己搞定不烦劳大加了!
[/red]
代码:
 
后退
顶部