Add(MainForm,520980,217,49)
{
Width=702
Height=486
link(onCreate,14795528:doWork1,[])
}
Add(ChildPanel,14795528,273,63)
{
}
BEGIN_SDK
Add(EditMulti,11519715,28,21)
{
WorkCount=1
Width=496
Height=459
link(doWork1,4266222:doData,[(52,27)(52,230)])
}
Add(Panel,16673103,399,392)
{
Top=5
Width=791
Height=562
Color=16711680
BorderWidth=0
BevelInner=0
BevelWidth=0
}
Add(MoveWindow,4813781,413,49)
{
link(Handle,8217273:Handle,[(419,37)(398,37)(398,92)(370,92)])
}
Add(Math,16498202,245,280)
{
OpType=2
ResultType=0
PColor(Op2,16733695)
link(onResult,5558418:Wire1,[])
link(Op2,8217273:Width,[(258,116)(328,116)])
}
Add(Math,1268462,287,287)
{
OpType=2
ResultType=0
link(onResult,5558418:Wire2,[])
link(Op2,8217273:Height,[(300,129)(335,129)])
}
Add(Hub,4830515,210,280)
{
OutCount=4
link(onEvent1,16498202:doOperation,[])
link(onEvent2,1268462:doOperation,[])
link(onEvent3,7699264:doCalc,[])
link(onEvent4,14759686:doCalc,[])
}
Add(MathParse,7699264,336,294)
{
DataCount=3
MathStr="%2-(%2-%3)*%1"
ResultType=0
PColor(X3,16711935)
link(onResult,5558418:Wire3,[])
link(X1,10751850:Var2,[])
link(X2,8217273:MouseX,[(349,184)(356,184)])
link(X3,8217273:Left,[(356,184)(342,184)])
}
Add(MathParse,14759686,385,301)
{
DataCount=3
MathStr="%2-(%2-%3)*%1"
ResultType=0
PColor(X3,11184640)
link(onResult,5558418:Wire4,[])
link(X1,10751850:Var3,[(391,267)])
link(X2,8217273:MouseY,[(398,187)(363,187)])
link(X3,8217273:Top,[(405,187)(349,187)])
}
Add(MathParse,6410142,56,273)
{
@Hint=#47:Используем скролл для изменения масштаба +-0.01|
MathStr="((%1>0)*(%2+0.01))+
(((%1<0)and(%2>0.0))*(%2-0.01))
"
Default=1
link(onResult,14657662:doWork2,[])
link(X2,9462090:Var1,[(69,265)(95,265)(95,336)])
AddHint(-17,130,200,26,@Hint)
}
Add(Hub,7146596,112,273)
{
link(onEvent1,9344723:doWork2,[])
link(onEvent2,4830515:doEvent1,[])
}
Add(GetDataEx,10751850,336,262)
{
Angle=3
link(Data,7269437:Result,[(324,267)(324,396)(167,396)])
}
Add(MemFifo,8753638,161,294)
{
link(onData,7269437:doOperation,[(200,300)(200,341)(149,341)(149,356)])
}
Add(Math,7269437,161,350)
{
OpType=3
link(Op1,9462090:Var2,[])
link(Op2,8753638:Value2,[])
}
Add(GetDataEx,9462090,161,331)
{
link(Data,8753638:Value1,[])
}
Add(HubEx,9344723,144,273)
{
Angle=1
link(onEvent,8753638:doValue,[(148,300)])
}
Add(Hub,7262469,112,224)
{
link(onEvent1,9344723:doWork1,[(148,230)])
link(onEvent2,14657662:doWork1,[(138,237)(138,257)(102,257)])
}
Add(HubEx,14657662,98,273)
{
link(onEvent,7146596:doEvent1,[])
}
Add(CableEvent,11282654,280,42)
{
Count=4
link(Wire1,8217273:doWidth,[])
link(Wire2,8217273:doHeight,[])
link(Wire3,8217273:doLeft,[])
link(Wire4,8217273:doTop,[])
}
Add(CableWork,5558418,434,280)
{
Count=4
link(Cable,11282654:Cable,[(457,286)(457,101)(268,101)(268,48)])
}
Add(VisualShape,8217273,322,42)
{
Left=25
Top=10
Width=275
Height=265
Point(Width)
Point(Height)
Point(Left)
Point(Top)
Point(doWidth)
Point(doHeight)
Point(doLeft)
Point(doTop)
Point(MouseX)
Point(MouseY)
Point(onMouseWheel)
Point(doSetFocus)
Point(onMouseDown)
Point(Handle)
Point(onMouseMove)
link(onMouseWheel,6410142:doCalc,[(480,48)(480,448)(44,448)(44,279)])
link(onMouseDown,4813781:doMove,[])
link(onMouseMove,8217273:doSetFocus,[(386,62)(386,69)(310,69)(310,76)])
}
Add(DoData,4266222,63,224)
{
Data=Integer(1)
link(onEventData,7262469:doEvent1,[])
}
END_SDK
Да, нет, расчёты верны, это похоже на индивидуальное поведение VisualShape. Хотя, это надо спросить у его авторов.
------------ Дoбавленo в 20.12:
nesco, если параллельно подключить багер к координатам мыши картинки, то можно увидеть, как проявляются посторонние координаты. Так картинка, имеет например максимум 500 пикселей, а в крайне правом положении формы после нужных (как мне кажется) координат над картинкой, проявляются координаты глобального масштаба (экрана), например в 1200 пикселей. Проверено. Вот почему картинка уплывала влево. То же самое и с Y-координатой мыши.
------------ Дoбавленo в 22.38:
Вставил дополнительный учёт в схеме, позицию мыши к позиции родительской формы. Вроде заработало.
Add(MainForm,520980,259,49)
{
Width=614
Height=472
Point(Left)
Point(Top)
}
Add(ChildPanel,14795528,259,98)
{
link(Data1,520980:Left,[])
link(Data2,520980:Top,[])
}
BEGIN_SDK
Add(EditMulti,11519715,28,21)
{
WorkCount=1
DataCount=2
Width=566
Height=375
link(doWork1,5260458:doLoad,[(46,27)(46,83)])
}
Add(Image,11537535,259,77)
{
Width=560
Height=440
Color=12639424
ViewStyle=1
Point(onMouseDown)
Point(onMouseWheel)
Point(doSetFocus)
Point(doWidth)
Point(doHeight)
Point(doLeft)
Point(doTop)
Point(ImageWidth)
Point(ImageHeight)
Point(Left)
Point(Top)
Point(Width)
Point(Height)
Point(Handle)
Point(MouseX)
Point(MouseY)
link(onMouseDown,4813781:doMove,[])
link(onMouseWheel,342210:In,[])
}
Add(Panel,16673103,91,336)
{
Width=559
Height=441
Color=16711680
BorderWidth=0
BevelInner=0
BevelWidth=0
}
Add(Hub,9194805,140,77)
{
OutCount=3
link(onEvent1,11537535:doLoad,[])
link(onEvent2,11537535:doSetFocus,[(196,90)(196,97)])
link(onEvent3,6563661:doCalc,[(168,97)(168,124)(79,124)(79,181)])
}
Add(MoveWindow,4813781,406,84)
{
link(Handle,11537535:Handle,[(412,72)(396,72)(396,141)(314,141)])
}
Add(Img_Loader,5260458,91,77)
{
link(onLoad,9194805:doEvent1,[])
}
Add(Math,16498202,259,231)
{
OpType=2
ResultType=0
PColor(Op2,16733695)
link(onResult,5558418:Wire1,[])
link(Op2,9514427:Var2,[])
}
Add(Math,1268462,301,238)
{
OpType=2
ResultType=0
link(onResult,5558418:Wire2,[])
link(Op2,16575302:Var2,[(314,207)(279,207)])
}
Add(MathParse,7699264,392,245)
{
DataCount=3
MathStr="%2-(%2-%3)*%1"
ResultType=0
PColor(X3,16711935)
link(onResult,5558418:Wire3,[])
link(X1,10751850:Var2,[])
link(X3,11537535:Left,[(412,181)(286,181)])
}
Add(MathParse,14759686,476,252)
{
DataCount=3
MathStr="%2-(%2-%3)*%1"
ResultType=0
PColor(X3,11184640)
link(onResult,5558418:Wire4,[])
link(X1,10751850:Var3,[(482,225)])
link(X3,11537535:Top,[(496,152)(293,152)])
}
Add(MathParse,6410142,119,224)
{
@Hint=#47:Используем скролл для изменения масштаба +-0.01|
MathStr="((%1>0)*(%2+0.05))+
(((%1<0)and(%2>0.0))*(%2-0.05))
"
Default=1
link(onResult,14657662:doWork2,[])
link(X2,9462090:Var1,[(132,216)(158,216)(158,315)])
}
Add(Hub,7146596,175,224)
{
link(onEvent1,564344:doWork2,[])
link(onEvent2,8636872:doEvent1,[])
}
Add(GetDataEx,10751850,392,220)
{
Angle=3
link(Data,7269437:Result,[(383,225)(383,370)(265,370)])
}
Add(MemFifo,8753638,259,273)
{
Count=1
link(onData,7269437:doOperation,[(298,279)(298,320)(247,320)(247,335)])
}
Add(MathParse,6563661,91,175)
{
DataCount=4
MathStr="min(%2/%1 , %4/%3)"
PColor(X2,170)
PColor(X4,5635925)
link(onResult,13670200:doEvent1,[])
link(X1,9514427:Var1,[(97,138)])
link(X2,11537535:Width,[(104,145)(300,145)])
link(X3,16575302:Var1,[(111,152)])
link(X4,11537535:Height,[(118,159)(307,159)])
}
Add(GetDataEx,9514427,266,133)
{
PColor(Data,16733695)
link(Data,11537535:ImageWidth,[])
}
Add(GetDataEx,16575302,273,147)
{
link(Data,11537535:ImageHeight,[])
}
Add(Math,7269437,259,329)
{
OpType=3
link(Op1,9462090:Var2,[])
}
Add(GetDataEx,9462090,259,310)
{
link(Data,8753638:Value1,[])
}
Add(HubEx,14657662,161,224)
{
link(onEvent,7146596:doEvent1,[])
}
Add(CableEvent,11282654,231,98)
{
Count=4
link(Wire1,11537535:doWidth,[])
link(Wire2,11537535:doHeight,[])
link(Wire3,11537535:doLeft,[])
link(Wire4,11537535:doTop,[])
}
Add(CableWork,5558418,525,231)
{
Count=4
link(Cable,9138729:In,[])
}
Add(Hub,13670200,140,175)
{
link(onEvent1,564344:doWork1,[(204,181)])
link(onEvent2,14657662:doWork1,[(165,188)])
}
Add(HubEx,564344,200,224)
{
Angle=1
link(onEvent,8753638:doValue,[(204,279)])
}
Add(Hub,8636872,231,231)
{
OutCount=4
link(onEvent1,16498202:doOperation,[])
link(onEvent2,1268462:doOperation,[])
link(onEvent3,8194395:doCalc,[])
link(onEvent4,11030232:doCalc,[])
}
Add(MathParse,8194395,343,245)
{
MathStr="%1-%2"
ResultType=0
PColor(X2,16711935)
link(onResult,7699264:doCalc,[])
link(X1,11537535:MouseX,[(349,195)(321,195)])
link(X2,11519715:Data1,[(356,51)(34,51)])
}
Add(MathParse,11030232,434,252)
{
MathStr="%1-%2-40"
ResultType=0
PColor(X2,16711935)
link(onResult,14759686:doCalc,[])
link(X1,11537535:MouseY,[(440,166)(328,166)])
link(X2,11519715:Data2,[(447,37)(41,37)])
}
Add(LineBreak,7725584,77,224)
{
Color=12639424
link(Out,6410142:doCalc,[])
Primary=[342210,266,-133]
}
Add(LineBreak,13818505,189,98)
{
Color=65280
link(Out,11282654:Cable,[])
Primary=[9138729,357,133]
}
END_SDK
Add(Button,13924186,161,98)
{
Left=565
Top=5
Width=35
Height=40
link(onClick,3153243:doExecute,[])
}
Add(ODialog,3153243,210,98)
{
StartDir="C:UsersLAPictures"
FileName="DSC01692.JPG"
link(onExecute,14795528:doWork1,[])
}