Вверх ↑
Ответов: 8887
Рейтинг: 823
#1: 2021-08-01 00:07:19 ЛС | профиль | цитата
Pavel, вот с использованием OpenGL на 600 точек (масштаб колёсиком, перемещение ползунками, до 64 строк/сек).
И не забываем, что есть ось "Z", по которой можно положить несколько графиков.
GL


Add(MainForm,15261923,196,112)
{
Left=20
Top=20
Width=600
Height=454
Caption="КартинкаGL"
Point(onMouseWheel)
link(onCreate,16313935:doWork1,[])
link(onMouseWheel,8435041:doScale,[(235,139)(235,384)])
}
Add(StrList,1458062,357,126)
{
}
Add(Image,8168712,385,252)
{
Left=20
Top=61
Width=562
Height=355
ViewStyle=4
Point(Handle)
Point(MouseX)
Point(MouseY)
Point(onMouseUp)
Point(onMouseDown)
Point(onMouseMove)
link(Bitmap,5213144:Bitmap,[])
link(onMouseUp,14362898:doWork1,[])
link(onMouseDown,14362898:doWork2,[])
link(onMouseMove,5339163:doCompare,[(431,279)(431,307)])
}
Add(ChanelToIndex,14362898,441,259)
{
link(onIndex,9790564:doValue,[])
}
Add(Memory,9790564,490,259)
{
Default=Integer(0)
}
Add(If_else,5339163,490,301)
{
Op2=Integer(1)
link(onTrue,8435041:doMouse,[(529,307)(529,342)(375,342)(375,370)])
link(Op1,9790564:Value,[])
}
Add(MultiElementEx,8435041,385,364)
{
link(Array,1458062:Array,[(391,313)(377,313)])
link(Handle,8168712:Handle,[])
link(CoordX,8168712:MouseX,[])
link(CoordY,8168712:MouseY,[])
link(TranslateX,14456561:Result,[(419,348)(487,348)])
link(TranslateY,6533203:Result,[(426,355)(566,355)])
link(onEnd,3471472:doEvent1,[])
}
BEGIN_SDK
Add(EditMultiEx,11996247,14,7)
{
WorkCount=#7:doMouse|5:doJMG|7:doScale|
EventCount=#5:onEnd|
DataCount=#5:Array|6:Handle|6:CoordX|6:CoordY|10:TranslateX|10:TranslateY|
Width=832
Height=284
VOffset=35
HOffset=155
link(doMouse,4735359:doValue,[(179,48)(179,55)(214,55)(214,62)])
link(doJMG,14325692:doEvent1,[(39,55)(39,153)])
link(doScale,14855729:doCalc,[(207,62)(207,76)(305,76)(305,55)])
}
Add(GL_Main,5754056,182,147)
{
Color=0
link(onInit,13520164:doInit,[])
link(onViewPort,1353664:doPerspective,[(237,160)(237,202)])
link(Handle,11996247:Handle,[(188,138)(174,138)(174,40)(182,40)])
}
Add(Timer,10100784,91,196)
{
Interval=10
Enable=1
link(onTimer,14974901:doEvent1,[])
}
Add(GL_GTools,5073611,182,196)
{
Point(doClear)
Point(doPushMatrix)
Point(doPopMatrix)
}
Add(Hub,14974901,133,196)
{
OutCount=6
link(onEvent1,5073611:doClear,[])
link(onEvent2,5073611:doPushMatrix,[])
link(onEvent3,6551869:doTranslate,[(158,216)(158,188)(284,188)(284,111)])
link(onEvent4,5073611:doPopMatrix,[(170,223)(170,216)])
link(onEvent5,5754056:doFlip,[(165,230)(165,167)])
link(onEvent6,11996247:onEnd,[(823,237)(823,48)])
}
Add(Hub,14325692,49,147)
{
OutCount=3
link(onEvent1,5754056:doInit,[])
link(onEvent2,5754056:doViewPort,[])
link(onEvent3,10100784:doTimer,[(81,167)(81,202)])
}
Add(GL_GluTools,13520164,245,147)
{
Texture=0
link(onInit,964847:doEnabled,[])
}
Add(GL_Light,137856,336,147)
{
Diffuse=65280
}
Add(GL_Options,964847,294,147)
{
Flag=2
link(onEvent,137856:doEnabled,[])
}
Add(MultiElement,14576462,245,105)
{
link(Data1,4735359:Value,[(251,96)(230,96)])
link(Data2,13577233:Value,[(258,96)(272,96)])
}
BEGIN_SDK
Add(EditMulti,11760529,10,10)
{
EventCount=1
WorkCount=1
DataCount=2
Width=223
Height=109
link(doWork1,5590513:doRotate,[(26,16)(26,62)])
}
Add(GL_Rotate,5590513,42,56)
{
Y=1
link(onRotate,346824:doRotate,[])
link(Angle,11760529:Data1,[(48,33)(16,33)])
}
Add(GL_Rotate,346824,119,56)
{
X=1
link(onRotate,11760529:onEvent1,[(196,62)(196,16)])
link(Angle,11760529:Data2,[(125,33)(23,33)])
}
END_SDK
Add(GL_Perspective,1353664,245,196)
{
Fovy=25
}
Add(Gl_Begin,11774056,504,105)
{
BlockType=2
link(onBegin,13350121:doEnum,[])
}
Add(GL_Vertex3D,11725528,700,189)
{
link(X,16709307:Result,[])
link(Y,6790657:Result,[(713,173)(748,173)])
link(Z,13083751:Result,[(720,180)(790,180)])
}
Add(Gl_End,13828792,609,147)
{
}
Add(ArrayEnum,13350121,560,105)
{
Type=1
link(onItem,7629252:doEvent1,[])
link(onEndEnum,13828792:doEnd,[(599,118)(599,153)])
link(Array,11996247:Array,[(566,34)(175,34)])
}
Add(Hub,7629252,609,105)
{
link(onEvent1,4749971:doSplit,[(634,111)(634,55)])
link(onEvent2,3118699:doColor,[(648,118)(648,195)])
}
Add(Math,6790657,742,126)
{
OpType=3
Op2=200
link(onResult,13083751:doOperation,[])
link(Op1,4749971:Part2,[(748,110)(713,110)])
link(Op2,7147964:Var2,[])
}
Add(Math,13083751,784,126)
{
OpType=3
Op2=15
link(Op1,4749971:Part3,[(790,103)(720,103)])
link(Op2,7147964:Var3,[(797,117)])
}
Add(GL_Color,3118699,658,189)
{
Color=16777215
link(onColor,11725528:doVertex,[])
link(Color,4749971:Part4,[(664,89)(727,89)])
}
Add(MultiStrPart,4749971,700,49)
{
Count=4
link(onSplit,16709307:doCalc,[(739,55)(739,97)(683,97)(683,132)])
}
Add(GetDataEx,7147964,749,112)
{
link(Data,10337216:Value,[])
}
Add(Memory,4735359,224,56)
{
Point(Data)
link(onData,13577233:doValue,[])
link(Data,11996247:CoordX,[(230,47)(189,47)])
}
Add(Memory,13577233,266,56)
{
Point(Data)
link(Data,11996247:CoordY,[(272,40)(196,40)])
}
Add(Memory,10337216,749,49)
{
Default=Integer(100)
}
Add(Gl_Scale,6749172,399,105)
{
X=1
Y=1
Z=1
link(onScale,15429184:doLineSize,[])
link(X,8649621:Var1,[(405,89)])
link(Y,8649621:Var2,[])
link(Z,8649621:Var3,[(419,89)])
}
Add(MathParse,14855729,406,49)
{
DataCount=1
MathStr="%0*exp(%1*0.00079425)"
Default=1
}
Add(GetDataEx,8649621,406,84)
{
link(Data,14855729:Result,[])
}
Add(GL_PrimSizes,15429184,455,105)
{
Size=2
link(onSize,11774056:doBegin,[])
}
Add(Gl_Translate,6551869,350,105)
{
X=1
Y=1
link(onTranslate,6749172:doScale,[])
link(X,11996247:TranslateX,[(356,26)(203,26)])
link(Y,11996247:TranslateY,[(363,19)(210,19)])
}
Add(MathParse,16709307,700,126)
{
MathStr="(%1-300)/%2"
link(onResult,6790657:doOperation,[])
link(X1,13350121:Index,[(706,117)(699,117)(699,145)(573,145)])
link(X2,7147964:Var1,[(713,117)])
}
END_SDK
Add(Button,14316988,266,196)
{
Left=5
Top=5
Width=75
Caption="Отобразить"
link(onClick,7488654:doEvent1,[])
}
Add(Bitmap,5213144,385,203)
{
HWidth=600
HHeight=400
Point(Width)
Point(Height)
Point(doCreate)
}
Add(Hub,7488654,322,196)
{
OutCount=4
link(onEvent1,1458062:doClear,[(347,202)(347,139)])
link(onEvent2,5213144:doCreate,[(368,209)(368,223)])
link(onEvent3,8168712:doLoad,[(361,216)(361,258)])
link(onEvent4,16313935:doWork2,[(347,223)(347,237)(256,237)(256,139)])
}
Add(ScrollBar,1983831,434,210)
{
Left=10
Top=45
Width=570
Min=-200
Page=10
link(onPosition,14456561:doOperation,[])
}
Add(ScrollBar,6625439,518,210)
{
Top=45
Width=20
Height=365
Min=-200
Page=10
Kind=1
link(onPosition,6533203:doOperation,[])
}
Add(Math,14456561,476,210)
{
OpType=3
Op2=50
}
Add(Math,6533203,560,210)
{
OpType=3
Op2=-50
}
Add(MultiElement,16313935,266,126)
{
@Hint=#31:Заполнение 600 случайнымх точек|32:Иммитация считывания поступающих|26:данных по команде блока GL|
link(onEvent1,1458062:doAdd,[])
link(onEvent2,8435041:doJMG,[(305,139)(305,377)])
link(onEvent3,1458062:doDelete,[])
}
BEGIN_SDK
Add(EditMulti,1486386,21,21)
{
EventCount=3
WorkCount=3
Width=405
Height=256
link(doWork1,3519740:doRandomize,[(185,27)(185,125)])
link(doWork2,14844364:doFor,[(53,34)(53,118)])
link(doWork3,6407052:doEvent1,[])
}
Add(FormatStr,111795,357,119)
{
DataCount=3
Mask="%1;%2;0;%3"
link(onFString,1486386:onEvent1,[(410,125)(410,27)])
link(Str1,14166143:Result,[(363,103)(279,103)(279,152)(132,152)])
link(Str2,10904136:Result,[(370,110)(349,110)(349,159)(293,159)])
link(Str3,12746096:Value,[])
}
Add(For,14844364,63,112)
{
End=599
link(onEvent,14092551:doWork2,[])
link(onStop,1486386:onEvent2,[(102,125)(102,34)])
}
Add(Random,3519740,196,112)
{
Min=-10
Max=10
Mode=1
link(onRandom,15210140:doEvent1,[])
}
Add(Memory,12746096,371,56)
{
}
Add(MathParse,10904136,287,119)
{
DataCount=1
MathStr="%1 + %0"
link(onResult,111795:doString,[])
}
Add(If_else,10620772,273,56)
{
Type=1
Op2=Integer(0)
link(onTrue,10160487:doData,[])
link(onFalse,16561591:doData,[])
}
Add(DoData,10160487,315,56)
{
Data=Integer(255)
link(onEventData,15162297:doWork2,[])
}
Add(DoData,16561591,322,63)
{
Data=Integer(65280)
link(onEventData,15162297:doWork3,[(361,69)])
}
Add(Hub,15210140,238,112)
{
link(onEvent1,10620772:doCompare,[(263,118)(263,62)])
link(onEvent2,10904136:doCalc,[])
}
Add(HubEx,15162297,357,56)
{
link(onEvent,12746096:doValue,[])
}
Add(Math,14166143,126,112)
{
OpType=1
Op2=300
link(onResult,3519740:doRandom,[])
}
Add(HubEx,14092551,105,112)
{
link(onEvent,14166143:doOperation,[])
}
Add(Hub,6407052,70,35)
{
link(onEvent1,14092551:doWork1,[(109,41)])
link(onEvent2,12024395:doData,[])
}
Add(DoData,12024395,126,42)
{
Data=Integer(0)
link(onEventData,1486386:onEvent3,[(417,48)(417,41)])
}
END_SDK
Add(Label,1034859,616,420)
{
Left=145
Top=10
}
Add(Hub,3471472,441,364)
{
link(onEvent1,16313935:doWork3,[(466,370)(466,405)(249,405)(249,146)])
link(onEvent2,10250351:doNext,[])
}
Add(Counter,10250351,525,371)
{
Max=999
}
Add(StrCat,4119005,574,420)
{
Str2=" строк/сек"
link(onStrCat,1034859:doText,[])
}
Add(Timer,14493765,448,420)
{
link(onTimer,1988639:doEvent1,[])
}
Add(DoData,5125283,525,420)
{
link(onEventData,4119005:doStrCat,[])
link(Data,10250351:Count,[])
}
Add(Hub,1988639,490,420)
{
link(onEvent1,5125283:doData,[])
link(onEvent2,10250351:doReset,[(515,433)(515,391)])
}

карма: 19

1
Голосовали:Pavel