Конечно схему нужно облагораживать - просто показал принцип, что надо обновлять внутренний буфер, предварительно очистив его, или установить опцию автоматической очистки.
Но в этом случае будет нельзя манипулировать несколькими картинками.
Add(MainForm,6320290,119,42)
{
Width=783
Height=629
Caption="Пример использования Img_Shift"
Point(Handle)
}
Add(Button,5647691,217,238)
{
Left=560
Top=10
Caption="Вверх"
Data=Integer(-10)
link(onClick,2543094:doWork2,[])
}
Add(Button,8797515,175,252)
{
Left=525
Top=35
Caption="Налево"
Data=Integer(-10)
link(onClick,3715352:doWork1,[(303,258)])
}
Add(Button,6381857,259,266)
{
Left=595
Top=35
Caption="Направо"
Data=Integer(10)
link(onClick,3715352:doWork2,[])
}
Add(Button,1607537,217,301)
{
Left=560
Top=60
Caption="Вниз"
Data=Integer(10)
link(onClick,2543094:doWork3,[(270,307)])
}
Add(Button,8487047,252,623)
{
Left=320
Top=15
Caption="Меньше"
Data=Integer(-1)
link(onClick,11824516:doEvent1,[])
}
Add(Button,8492579,161,686)
{
Left=385
Top=15
Caption="Больше"
Data=Integer(1)
link(onClick,16738661:doEvent1,[])
}
Add(InfoTip,12742892,168,217)
{
Info=#21:перемещение по экрану|
Width=155
Height=130
}
Add(PaintBox,6293573,539,105)
{
Top=100
Width=767
Height=490
}
Add(Img_Bmp,2351741,525,455)
{
Point(Transform)
Point(X)
Point(Y)
link(onDraw,6293573:doRefresh,[(576,461)(576,388)(534,388)(534,111)])
link(Bitmap,6293573:Bitmap,[(531,394)(545,394)])
link(SourceBitmap,5045561:Bitmap,[(538,408)(573,408)])
link(Transform,15481771:Transform,[(545,443)(583,443)(583,772)(622,772)])
link(X,15712909:Result,[(552,450)(405,450)])
link(Y,4963455:Result,[(559,447)(391,447)])
}
Add(Img_Loader,5983390,350,392)
{
link(onLoad,15263304:doEvent1,[])
}
Add(ODialog,14812495,301,392)
{
Filter="BMP, GIF, JPG, JPEG, ICO, WMF, EMF, PNG, XBM, TIFF, PDF files (*.bmp;*.gif;*.ico;*wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg;*.pdf)|.bmp;*.gif;*.ico;*wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg;*.pdf|All files (*.*)|*.*"
link(onExecute,5983390:doLoad,[])
}
Add(Button,3343426,203,392)
{
Left=45
Top=25
link(onClick,14812495:doExecute,[])
}
Add(MathParse,4963455,385,210)
{
MathStr="%2 + %1"
link(onResult,8432382:doEvent1,[])
link(X2,2122313:Value,[])
}
Add(Memory,2122313,392,147)
{
Default=Integer(0)
}
Add(HubEx,2543094,266,238)
{
link(onEvent,4963455:doCalc,[(317,244)(317,216)])
}
Add(Hub,8432382,448,210)
{
OutCount=3
link(onEvent1,2122313:doValue,[(474,216)(474,184)(380,184)(380,153)])
link(onEvent2,13201157:doWork2,[])
link(onEvent3,6838470:doWork1,[(494,230)])
}
Add(Bitmap,5045561,567,329)
{
Point(Width)
Point(Height)
}
Add(MathParse,15712909,399,315)
{
MathStr="%2 + %1"
link(onResult,8714744:doEvent1,[])
link(X2,7220870:Value,[])
}
Add(Memory,7220870,406,252)
{
Default=Integer(0)
}
Add(Hub,8714744,462,315)
{
OutCount=3
link(onEvent1,7220870:doValue,[(488,321)(488,289)(394,289)(394,258)])
link(onEvent2,3239796:doWork3,[(508,328)])
link(onEvent3,6838470:doWork2,[])
}
Add(HubEx,3715352,299,266)
{
Angle=1
link(onEvent,15712909:doCalc,[(303,321)])
}
Add(Hub,15263304,420,392)
{
link(onEvent1,5045561:doLoad,[(483,398)(483,335)])
link(onEvent2,14582100:doWork2,[])
}
Add(HubEx,14582100,490,399)
{
Angle=1
link(onEvent,75645:doWork1,[])
}
Add(HubEx,6838470,490,329)
{
Angle=1
link(onEvent,14582100:doWork1,[])
}
Add(HubEx,13201157,504,217)
{
Angle=3
link(onEvent,6293573:doClear,[(508,118)])
}
Add(Img_UseScale,15481771,616,728)
{
link(X,7582377:Var2,[])
link(Y,7582377:Var3,[(636,698)])
}
Add(MathParse,14620076,595,623)
{
MathStr="%2 + (%1*0.2)"
link(onResult,16148617:doValue,[(639,629)(639,601)(583,601)(583,573)])
link(X2,16148617:Value,[])
}
Add(Hub,11824516,322,623)
{
OutCount=3
link(onEvent1,708032:doWork2,[])
link(onEvent2,10300237:doWork2,[])
link(onEvent3,3400161:doWork2,[(438,643)(438,454)])
}
Add(HubEx,3400161,490,448)
{
Angle=1
link(onEvent,2351741:doDraw,[(494,461)])
}
Add(Hub,16738661,308,686)
{
OutCount=3
link(onEvent1,708032:doWork3,[(473,692)])
link(onEvent2,10300237:doWork3,[(414,699)])
link(onEvent3,75645:doWork2,[(406,706)(406,426)])
}
Add(HubEx,75645,490,420)
{
Angle=1
link(onEvent,3400161:doWork1,[])
}
Add(Memory,16148617,602,567)
{
Default=Integer(1)
}
Add(GetDataEx,7582377,623,693)
{
link(Data,14620076:Result,[(629,674)(601,674)])
}
Add(HubEx,708032,469,623)
{
link(onEvent,14620076:doCalc,[])
}
Add(HubEx,3239796,504,259)
{
Angle=3
link(onEvent,13201157:doWork3,[])
}
Add(HubEx,10300237,410,630)
{
Angle=3
link(onEvent,3239796:doWork2,[(414,265)])
}