Вверх ↑
Ответов: 490
Рейтинг: 162
#1: 2020-07-14 19:15:02 ЛС | профиль | цитата
Всем привет, возникла идея использовать OpenGL для более красивого (сглаженного) рисования в своих проектах, вместо штатных элементов. Непрерывное рисование( обновление ) сцены таймером N раз в секунду не нужно. Только по событию.
Набросал примерчик и столкнулся с проблемой, не все события отрисовывают правильно.
Возможно чего то накосячил или как то синхронизировать надо или еще чего (доп отривовку добавлять) , может каким другим способом (путём)пойти, подскажите ?
В примере при нажатии на кнопку всё -ОК, при выборе из таблицы -нет.
пример

Add(Button,8764201,70,84)
{
Left=310
Top=15
Width=90
Caption="Рассчёт"
link(onClick,2159489:doEvent1,[])
}
Add(Edit,13883334,301,98)
{
Left=92
Top=15
Text="321"
}
Add(Label,13311803,70,182)
{
Left=15
Top=20
Width=72
Height=17
Caption="Диаметр, мм"
}
Add(For,7740520,224,98)
{
Start=3
End=100
link(onEvent,2317069:doCalc,[(270,104)(270,188)])
link(End,4115576:Text,[])
}
Add(MathParse,2317069,294,182)
{
MathStr="(sin ((360/%1)/2))*%2"
AngleMode=1
link(onResult,3039440:doOperation,[])
link(X1,12869071:Var2,[(300,170)(230,170)])
link(X2,4326351:Var2,[])
}
Add(GetDataEx,12869071,224,140)
{
link(Data,7740520:Position,[])
}
Add(StringTable,262099,504,182)
{
Left=15
Top=60
Width=465
Height=250
Columns=#16:Диаметр, мм.=100|12:Частей, шт. |10:Хорда, мм.|10:Округленно|
Grid=0
Point(onMouseUp)
link(onClick,12261816:doEvent1,[(548,188)(548,251)])
}
Add(FormatStr,13922804,427,182)
{
DataCount=4
Mask="%1;%2;%3;%4"
link(onFString,262099:doAdd,[])
link(Str1,4326351:Var3,[(433,152)])
link(Str2,12869071:Var3,[(440,145)])
link(Str3,3039440:Result,[(447,170)(375,170)(375,228)(342,228)])
link(Str4,4918351:Result,[(454,170)(474,170)(474,229)(391,229)])
}
Add(Math,3039440,336,182)
{
OpType=35
Op2=0.00001
link(onResult,4918351:doOperation,[])
}
Add(GetDataEx,4326351,301,147)
{
link(Data,13883334:Text,[])
}
Add(Hub,2159489,140,84)
{
InCount=2
OutCount=3
link(onEvent1,262099:doClear,[(486,90)(486,195)])
link(onEvent2,7740520:doFor,[(214,97)(214,104)])
}
Add(Math,4918351,385,182)
{
OpType=35
Op2=0.01
link(onResult,13922804:doString,[])
}
Add(Edit,4115576,231,42)
{
Left=237
Top=15
Text="16"
}
Add(Label,3312127,70,133)
{
Left=155
Top=18
Width=77
Height=17
Caption="Расчёт от 3 до"
}
Add(GL_Main,12986311,210,287)
{
Color=16777215
TwoSide=0
AASamples=1
link(onInit,12198675:doInit,[])
link(onViewPort,3410847:doPerspective,[(263,300)(263,335)])
link(Handle,7534867:Var1,[])
}
Add(Timer,9506849,112,364)
{
Interval=100
Enable=1
}
Add(GL_GTools,771925,273,364)
{
Point(doClear)
Point(doPushMatrix)
Point(doPopMatrix)
}
Add(Hub,1049454,224,364)
{
InCount=2
OutCount=5
link(onEvent1,771925:doClear,[])
link(onEvent2,771925:doPushMatrix,[])
link(onEvent3,7484386:doEvent,[(256,384)(256,489)])
link(onEvent4,771925:doPopMatrix,[(265,391)(265,384)])
link(onEvent5,12986311:doFlip,[(250,398)(250,337)(200,337)(200,307)])
}
Add(Hub,16299401,77,287)
{
OutCount=4
link(onEvent1,12986311:doInit,[])
link(onEvent2,12986311:doViewPort,[])
link(onEvent3,9506849:doTimer,[(101,307)(101,370)])
link(onEvent4,2159489:doEvent2,[(119,314)(119,97)])
}
Add(GL_Perspective,3410847,273,329)
{
Fovy=30
}
Add(GL_Disk,5637833,525,504)
{
OutRadius=1.6
Stacks=1
Point(Slices)
Point(Stacks)
link(onDraw,6148131:doWork2,[])
link(Slices,2952427:Var2,[])
}
Add(GL_Color,13997617,476,504)
{
Color=12632256
link(onColor,5637833:doDraw,[])
}
Add(MultiStrPart,14001167,595,245)
{
Count=4
link(onSplit,8650820:doOperation,[])
link(Str,262099:Select,[(601,229)(517,229)])
}
Add(MainForm,2953706,28,287)
{
Width=763
Height=401
Caption="Хорда"
Position=1
link(onActivate,16299401:doEvent1,[])
}
Add(GL_Disk,8052256,364,497)
{
InRadius=1.6
OutRadius=1.6
Slices=50
Stacks=1
link(onDraw,8728187:doWork2,[])
}
Add(GL_Color,8472235,322,497)
{
Color=255
Alpha=0.5
link(onColor,8052256:doDraw,[])
}
Add(Label,7194114,798,245)
{
Left=20
Top=329
Width=20
Font=[MS Sans Serif,10,1,16711680,1]
Transparent=0
Caption=""
}
Add(FormatStr,10033650,756,245)
{
DataCount=3
Mask="Радиус=%3мм %1 Хорда=%2мм"
link(onFString,7194114:doText,[])
link(Str2,14001167:Part4,[(769,223)(634,223)(634,283)(622,283)])
link(Str3,8650820:Result,[(776,236)(748,236)(748,285)(657,285)])
}
Add(Convertor,13355228,707,245)
{
Mode=16
Word_1="часть"
Word_2="части"
Word_5="частей"
link(onResult,10033650:doString,[])
link(Data,1840627:Var3,[(713,236)(699,236)(699,306)])
}
Add(GL_GluTools,12198675,315,287)
{
DrawStyle=1
Orientation=0
Point(doDrawStyle)
}
Add(GetDataEx,1840627,602,301)
{
link(Data,14001167:Part2,[])
}
Add(Math,8650820,651,245)
{
OpType=3
Op2=2
link(onResult,13355228:doConvert,[])
link(Op1,14001167:Part1,[(657,236)(643,236)(643,291)(601,291)])
}
Add(ChildPanel,7534867,210,238)
{
}
BEGIN_SDK
Add(EditMulti,1983358,21,21)
{
VarCount=1
Width=83
Height=88
link(Var1,4591409:Handle,[(27,82)(55,82)])
}
Add(Panel,4591409,49,42)
{
Left=490
Top=60
Width=250
Height=250
Point(Handle)
}
END_SDK
Add(GL_PrimSizes,7310423,623,504)
{
Size=4
link(onSize,11735507:doEvent1,[])
}
Add(GL_Disk,5960140,749,511)
{
OutRadius=1.6
Stacks=1
Point(Slices)
Point(Stacks)
link(onDraw,10398903:doPointSize,[])
link(Slices,2952427:Var3,[(769,474)])
}
Add(GetDataEx,2952427,539,469)
{
link(Data,1840627:Var1,[(545,306)])
}
Add(GL_PrimSizes,10398903,791,504)
{
link(onSize,5764263:doWork2,[(832,510)(832,475)])
}
Add(GL_Color,9607631,707,511)
{
Color=0
link(onColor,5960140:doDraw,[])
}
Add(ChanelToIndex,5764263,854,462)
{
link(onIndex,7480950:In,[])
}
Add(Hub,11735507,672,504)
{
link(onEvent1,5764263:doWork1,[(697,510)(697,468)])
link(onEvent2,9607631:doColor,[])
}
Add(LineBreak,12943196,273,301)
{
link(Out,12198675:doDrawStyle,[])
Primary=[7480950,630,161]
}
Add(CheckBox,8844065,273,427)
{
Left=490
Top=20
Width=70
Checked=0
Caption="Диаметр"
}
Add(CheckBox,7194394,420,427)
{
Left=575
Top=20
Width=70
Checked=0
Caption="Связи"
}
Add(CheckBox,11268426,574,427)
{
Left=650
Top=20
Checked=0
Caption="Точки"
}
Add(IndexToChanel,7484386,273,483)
{
Point(Index)
link(onEvent1,8728187:doWork1,[(410,489)])
link(onEvent2,8472235:doColor,[(313,496)(313,503)])
link(Index,8844065:Checked,[])
}
Add(IndexToChanel,13582094,420,497)
{
Point(Index)
link(onEvent1,6148131:doWork1,[(464,503)(464,489)(564,489)])
link(onEvent2,13997617:doColor,[])
link(Index,7194394:Checked,[])
}
Add(IndexToChanel,13106668,574,504)
{
Point(Index)
link(onEvent2,7310423:doPointSize,[])
link(Index,11268426:Checked,[])
}
Add(HubEx,8728187,406,497)
{
link(onEvent,13582094:doEvent,[])
}
Add(HubEx,6148131,560,504)
{
link(onEvent,13106668:doEvent,[])
}
Add(Hub,12261816,560,245)
{
link(onEvent1,14001167:doSplit,[])
link(onEvent2,1670417:In,[(585,258)(585,335)])
}
Add(LineBreak,12539957,161,413)
{
link(Out,1049454:doEvent2,[(207,419)(207,377)])
Primary=[1670417,441,-84]
}
Add(Button,16630746,157,364)
{
Left=15
Top=40
Width=465
Caption="При нажатии на эту кнопку работает ,а при выборе из таблицы нет"
link(onClick,1049454:doEvent1,[])
}

WIN 7 64bit
карма: 4

0
Редактировалось 2 раз(а), последний 2020-07-14 19:25:16