Моя логика:
1. мерцание происходит от того, что сначала рисуется кадр с сеткой, затем рисуются квадратики. Глаз успевает это увидеть..
2. Если в буфере складывать квадратики и сетку перед выводом на экран, то получается лучше.
3. Попробовал скорость, скорость хорошая, только выводится не в то окно.
------------ Дoбавленo в 12.43:
Не правильно была составлена схема, теперь работает быстро и не глючит
Add(PaintBox,7129805,833,147)
{
Left=20
Top=45
Width=1015
Height=610
Visible=1
Enabled=1
}
Add(MainForm,13868957,301,294)
{
Width=1116
Height=712
Color=3289650
Position=1
Point(Handle)
link(onCreate,4923369:In,[])
}
Add(StyleXP,16011116,301,336)
{
}
Add(MultiElementEx,584355,672,245)
{
link(Bitmap,13956299:Var2,[(678,225)(839,225)])
link(X3,5097952:Position,[(685,236)(638,236)(638,323)(545,323)])
}
BEGIN_SDK
Add(EditMultiEx,5605638,21,21)
{
WorkCount=#5:doFor|
EventCount=#6:onStop|
DataCount=#6:Bitmap|2:X3|
Width=447
Height=270
link(doFor,3484668:doFor,[(35,27)(35,160)])
}
Add(Img_Rectangle,7686781,371,154)
{
Point2=4587590
Point2AsOffset=0
Color=16777215
BgColor=8404992
Style=1
Point(Point1)
Point(Point2)
link(Bitmap,5605638:Bitmap,[(377,85)(27,85)])
}
Add(Random,7282006,175,154)
{
Max=1000
link(onRandom,16630129:doRandom,[])
}
Add(For,3484668,63,154)
{
End=3200
link(onEvent,7282006:doRandom,[])
link(onStop,6967127:In,[])
}
Add(Random,16630129,217,154)
{
Max=1000
link(onRandom,12381344:doCalc,[])
}
Add(LineBreak,9917735,413,35)
{
link(Out,5605638:onStop,[(455,41)(455,27)])
Primary=[6967127,-301,126]
}
Add(FastMathParse,12381344,273,154)
{
DataCount=3
MathStr="(%1 - %3) * 65536 + %2"
ResultType=0
link(onResult,7686781:doDraw,[])
link(X1,16630129:Random,[(279,142)(262,142)(262,213)(223,213)])
link(X2,7282006:Random,[(286,128)(234,128)(234,198)(181,198)])
link(X3,5605638:X3,[(293,116)(34,116)])
}
END_SDK
Add(TrackBar,5097952,539,280)
{
Left=230
Top=20
Width=590
Max=10000
TickCount=10
Position=800
link(onPosition,12786966:doWork2,[])
}
Add(LineBreak,2991505,455,336)
{
link(Out,10651896:doData,[])
Primary=[4923369,-105,-28]
}
Add(TrackBar,7992853,539,336)
{
@Hint=#21:Сколько тиков масштаб|
Left=1060
Top=65
Width=40
Height=555
Max=200
Min=10
Position=100
Kind=1
link(onPosition,12786966:doWork3,[(592,342)])
}
Add(HubEx,12786966,588,280)
{
link(onEvent,197061:doEvent1,[])
}
Add(DoData,10651896,497,336)
{
Data=Integer(100)
link(onEventData,7992853:doPosition,[])
}
Add(ChildPanel,14291123,763,140)
{
}
BEGIN_SDK
Add(EditMulti,5342240,21,21)
{
VarCount=1
link(Var1,3760931:Handle,[(27,179)(41,179)])
}
Add(Panel,3760931,35,105)
{
Left=50
Top=75
Width=990
Height=585
Point(Handle)
}
END_SDK
Add(Img_Bmp,9022743,763,287)
{
DrawSource=1
link(Bitmap,14291123:Var1,[])
link(SourceBitmap,13956299:Var1,[(776,201)])
}
Add(GetDataEx,13956299,833,196)
{
link(Data,7129805:Bitmap,[])
}
Add(Hub,197061,609,280)
{
link(onEvent1,584355:doFor,[(656,286)(656,251)])
link(onEvent2,9022743:doDraw,[])
}
А вот для сравнения скорости, если выводить прямно на PainBox:
Add(PaintBox,7129805,609,140)
{
Left=20
Top=45
Width=1015
Height=610
ParentFont=0
Enabled=1
}
Add(MainForm,13868957,161,280)
{
Width=1116
Height=712
Color=3289650
Position=1
Point(Handle)
link(onCreate,4923369:In,[])
}
Add(StyleXP,16011116,161,322)
{
}
Add(MultiElementEx,584355,609,231)
{
link(Bitmap,7129805:Bitmap,[])
link(X3,5097952:Position,[(622,222)(498,222)(498,309)(405,309)])
}
BEGIN_SDK
Add(EditMultiEx,5605638,21,21)
{
WorkCount=#5:doFor|
EventCount=#6:onStop|
DataCount=#6:Bitmap|2:X3|
Width=447
Height=270
link(doFor,3484668:doFor,[(35,27)(35,160)])
}
Add(Img_Rectangle,7686781,371,154)
{
Point2=4587590
Point2AsOffset=0
Color=16777215
BgColor=8404992
Style=1
Point(Point1)
Point(Point2)
link(Bitmap,5605638:Bitmap,[(377,85)(27,85)])
}
Add(Random,7282006,175,154)
{
Max=1000
link(onRandom,16630129:doRandom,[])
}
Add(For,3484668,63,154)
{
End=3200
link(onEvent,7282006:doRandom,[])
link(onStop,6967127:In,[])
}
Add(Random,16630129,217,154)
{
Max=1000
link(onRandom,12381344:doCalc,[])
}
Add(LineBreak,597604,413,35)
{
link(Out,5605638:onStop,[(455,41)(455,27)])
Primary=[6967127,-301,126]
}
Add(FastMathParse,12381344,273,154)
{
DataCount=3
MathStr="(%1 - %3) * 65536 + %2"
ResultType=0
link(onResult,7686781:doDraw,[])
link(X1,16630129:Random,[(279,142)(262,142)(262,213)(223,213)])
link(X2,7282006:Random,[(286,128)(234,128)(234,198)(181,198)])
link(X3,5605638:X3,[(293,116)(34,116)])
}
END_SDK
Add(TrackBar,5097952,399,266)
{
Left=230
Top=20
Width=590
Max=10000
TickCount=10
Position=800
link(onPosition,12786966:doWork2,[])
}
Add(LineBreak,13220638,315,322)
{
link(Out,10651896:doData,[])
Primary=[4923369,-105,-28]
}
Add(TrackBar,7992853,399,322)
{
@Hint=#21:Сколько тиков масштаб|
Left=1060
Top=65
Width=40
Height=555
Max=200
Min=10
Position=100
Kind=1
link(onPosition,12786966:doWork3,[(452,328)])
}
Add(HubEx,12786966,448,266)
{
link(onEvent,197061:doEvent1,[])
}
Add(DoData,10651896,357,322)
{
Data=Integer(100)
link(onEventData,7992853:doPosition,[])
}
Add(Hub,197061,469,266)
{
OutCount=3
link(onEvent1,7129805:doClear,[(509,272)(509,153)])
link(onEvent2,584355:doFor,[(546,279)(546,237)])
link(onEvent3,7129805:doRefresh,[(564,286)(564,146)])
}



Поиск
Друзья
Администрация