Нужно отслеживать позицию курсора и принудительно перемещать его в ближайшую точку сетки. И соответственно заносить позицию линии с шагом сетки.
Получилось перемещать точку не трогая сам курсор (на что мозгов хватило). Может кому пригодится.
Схема
Add(MainForm,2953706,77,84)
{
}
Add(PaintBox,4708376,315,168)
{
Left=20
Top=20
Width=215
Height=240
ClearBeforeDraw=0
Point(onMouseEnter)
Point(MouseX)
Point(MouseY)
Point(onMouseMove)
link(onBeforeDraw,14559719:doEvent1,[(354,174)(354,146)(32,146)(32,293)])
link(onMouseMove,2554814:doEvent1,[])
}
Add(Img_Line,11330297,315,399)
{
Point2=6553600
Point(Color)
Point(Point2)
link(Bitmap,3336356:Var2,[])
link(Point2,1277526:Point,[(335,390)(377,390)])
}
Add(Hub,2554814,364,182)
{
link(onEvent2,4708376:doRefresh,[(389,195)(389,153)(298,153)(298,174)])
}
Add(Img_FloodFill,4929651,238,245)
{
X=1
Y=1
Color=255
ColorBorder=65280
PatternStyle=0
Point(Pattern)
link(Bitmap,3336356:Var1,[(244,208)])
link(Pattern,576848:Var3,[(258,233)(278,233)(278,290)])
}
Add(Bitmap,1772281,91,245)
{
HWidth=10
HHeight=10
FillColor=12632256
Point(doCreate)
Point(onCreate)
Point(HWidth)
Point(HHeight)
Point(FillColor)
link(onCreate,13724041:doDraw,[])
}
Add(Img_Line,13724041,140,245)
{
Point2=6553600
Color=32896
Point(Color)
link(onDraw,1275272:doDraw,[])
link(Bitmap,13849584:Var1,[(146,236)(132,236)])
}
Add(GetDataEx,13849584,126,285)
{
Angle=3
link(Data,1772281:Bitmap,[(97,290)])
}
Add(Img_Line,1275272,189,245)
{
Point2=100
Color=32896
Point(Color)
link(onDraw,4929651:doDraw,[])
link(Bitmap,576848:Var1,[(195,236)(181,236)])
}
Add(GetDataEx,576848,175,285)
{
Angle=3
link(Data,13849584:Var3,[])
}
Add(Hub,14559719,49,287)
{
OutCount=3
link(onEvent1,1772281:doCreate,[(74,293)(74,265)])
link(onEvent2,558041:doEvent1,[])
link(onEvent3,11330297:doDraw,[(81,307)(81,405)])
}
Add(GetDataEx,3336356,315,203)
{
link(Data,4708376:Bitmap,[])
}
Add(MathParse,9270417,357,301)
{
DataCount=1
MathStr="round(%1, 10)"
link(X1,4708376:MouseX,[(363,257)(328,257)])
}
Add(MathParse,350822,399,294)
{
DataCount=1
MathStr="round(%1, 10)"
link(X1,4708376:MouseY,[(405,229)(335,229)])
}
Add(PointXY,1277526,371,350)
{
link(X,9270417:Result,[(377,341)(363,341)])
link(Y,350822:Result,[(384,341)(405,341)])
}
Add(Hub,558041,329,294)
{
link(onEvent1,350822:doCalc,[])
link(onEvent2,9270417:doCalc,[])
}