Вверх ↑
Этот топик читают: Гость
Ответов: 49
Рейтинг: 11
#1: 2017-12-14 20:44:51 ЛС | профиль | цитата
Здравствуйте. Создавая автоматический анализатор видео-файлов (ОТК-автомат) столкнулся с проблемой ограничения для координат в Img_Line в 32768.
Задача стоит в прорисовке данных анализа в виде графиков с временными отметками, полученную картинку далее записываю в PNG (для дальнейшего "разбора полетов"). Один пиксель по горизонтали соответствует одному кадру анализируемого видеоматериала.

Img_Line не проривовывает линии правее 32767 пикселя, координаты уходят в отрицательную зону - по причине используемого Integer в компоненте.
Для используемых в схеме Img_Text, Img_Point такого ограничения не оказалось.

Вот примитивный образец принципа.

Add(MainForm,2953706,21,105)
{
Left=0
Top=0
Width=1543
Height=539
Align=0
Color=-16777201
Font=[MS Sans Serif,8,0,0,1]
ParentFont=1
Visible=0
Enabled=0
Cursor=0
KeyPreview=0
TabOrder=0
Ctl3D=1
WinStyle=0
Name=""
Hint=""
HintManager="(empty)"
Layout="(empty)"
WidthScale=0
HeightScale=0
AlphaBlendValue=255
Caption="Form"
BorderStyle=2
WindowsState=0
Icon=[]
TaskBar=0
DragForm=1
TransparentColor=16777215
Picture=[]
SavePosName=""
MouseCapture=1
ClientSize=1
Position=0
ShiftLeft=0
ShiftTop=0
TransparentManager="(empty)"
FormFastening="(empty)"
}
Add(StringTableMT,2997351,441,210)
{
Left=425
Top=10
Width=135
Height=20
Align=0
Color=-16777211
Font=[MS Sans Serif,8,0,0,1]
ParentFont=1
Visible=1
Enabled=0
Cursor=0
KeyPreview=0
TabOrder=0
Ctl3D=0
WinStyle=0
Name=""
Hint=""
HintManager="(empty)"
Layout="(empty)"
WidthScale=0
HeightScale=0
ModeSp=0
SizeSp=4
ColorSp=-16777201
MinOwn=0
MinRest=0
DoubleBuffered=1
Columns=#1:1|1:2|1:3|1:4|1:5|1:6|1:7|1:8|1:9|2:10|2:11|2:12|2:13|2:14|2:15|2:16|2:17|2:18|2:19|2:20|2:21|2:22|2:23|
StrDelimiter=";"
MT_ColDelimiter="_"
ColumnClick=0
AllMT_AddCol=0
ColumnWidth=80
MinColWidth=50
MaxColWidth=250
ClearAll=1
Redaction=1
FullSelect=1
SelectFind=0
ReplaceFind=1
Style=3
Flat=0
TabGrid=1
TabGridFrame=1
TableWBreak=1
SingleString=1
MultiSelect=1
CheckBoxes=1
Grid=1
Grid3D=1
StyleGrid3D=0
BumpText=1
Gradient=1
RowSelect=0
TrackSelect=1
InfoTip=0
HeaderDragDrop=1
AutoMakeVisible=0
ModeMakeVisible=0
MethodSort=0
TextAlign=0
EnableOnClick=0
ColorDelimiter="#"
ColorItems=1
IconColColor=-16777212
TextColor=-16777208
TextBkColor=-16777211
BkColor=-16777211
TranspColor=-16777201
GradientColor=-16777203
ShadowColor=-16777202
ImgSize=16
IconToBmp=1
ImgColumn=1
AssignedIList=1
ExtIconsCheck=1
IconsCheck=[]
MiscIcons=[]
Icons=[]
StringsStrLst=#
AutoTblStrLst=1
AppTxtStrLst=1
FileName=""
StrLstFName=""
IconFileName=""
IconsFileName=""
IListFileName=""
SaveColProp=1
SaveWidth=1
SaveImgIndex=1
SaveColor=1
SaveItemsColor=1
StaticColumn=0
Point(Matrix)
Point(Strings)
}
Add(For,10809443,315,210)
{
Start=0
End=180000
Step=1
IncludeEnd=0
InData=1
onBreakEnable=1
link(onEvent,2997351:doAdd,[])
link(onStop,11775279:doEvent1,[])
AddHint(50,-68,51,13,End)
}
Add(BitBtn,10528863,100,147)
{
Left=5
Top=10
Width=260
Height=20
Align=0
Color=-16777201
Font=[MS Sans Serif,8,0,0,1]
ParentFont=1
Visible=0
Enabled=0
Cursor=0
KeyPreview=0
TabOrder=0
Ctl3D=1
WinStyle=0
Name=""
Hint=""
HintManager="(empty)"
Layout="(empty)"
WidthScale=0
HeightScale=0
Frame=0
FrameColor=8421504
Caption="(как бы) сбор данных = 10 сек"
Data=Null()
Flat=0
Bitmap=[]
link(onClick,16651495:doEvent1,[])
}
Add(LED,13955729,441,161)
{
Left=580
Top=10
Width=25
Height=25
Align=0
Color=-16777201
Font=[MS Sans Serif,8,0,0,1]
ParentFont=1
Visible=0
Enabled=0
Cursor=0
KeyPreview=0
TabOrder=0
Ctl3D=1
WinStyle=0
Name=""
Hint=""
HintManager="(empty)"
Layout="(empty)"
WidthScale=0
HeightScale=0
Shape=0
Blick=0
ColorOn=255
ColorOff=128
ColorBlick=16777215
Value=1
}
Add(Hub,11775279,364,217)
{
InCount=1
OutCount=2
link(onEvent1,13955729:doOff,[(410,223)(410,174)])
link(onEvent2,14154840:doWork,[(406,230)(406,328)])
}
Add(ChildScrollBox,13302423,378,462)
{
@Color=65280
FirstUsage=1
}
BEGIN_SDK
Add(EditMulti,15489179,21,21)
{
EventCount=0
WorkCount=1
DataCount=0
VarCount=1
Width=580
Height=333
VOffset=0
HOffset=0
link(doWork1,9912342:Cable,[(59,27)(59,55)])
link(Var1,6746803:Cable,[(27,311)(216,311)])
}
Add(ScrollBox,7117036,560,308)
{
Left=5
Top=35
Width=1500
Height=450
Align=0
Color=-16777201
Font=[MS Sans Serif,8,0,0,1]
ParentFont=1
Visible=0
Enabled=0
Cursor=0
KeyPreview=0
TabOrder=0
Ctl3D=0
WinStyle=0
Name=""
Hint=""
HintManager="(empty)"
Layout="(empty)"
WidthScale=0
HeightScale=0
ModeSp=0
SizeSp=4
ColorSp=-16777201
MinOwn=0
MinRest=0
BorderStyle=0
}
Add(CableEventNamed,9912342,70,49)
{
Wire=#9:doRefresh|7:doClear|7:doWidth|
link(doRefresh,1184509:doEvent1,[(135,55)(135,48)])
link(doClear,1107824:doClear,[])
link(doWidth,10218721:doEvent1,[])
}
Add(CableDataNamed,6746803,210,231)
{
Wire=#5:Image|6:Height|5:Width|6:MouseX|6:MouseY|6:Bitmap|
link(Image,12541365:ImageBitmap,[])
link(Height,12541365:Height,[])
link(Width,12541365:Width,[])
link(MouseX,12541365:MouseX,[])
link(MouseY,12541365:MouseY,[])
link(Bitmap,16151129:Var2,[(251,213)(293,213)])
}
Add(GetDataEx,16151129,287,126)
{
Angle=0
link(Data,1107824:Bitmap,[])
}
Add(Hub,10218721,140,63)
{
InCount=1
OutCount=2
link(onEvent1,1107824:doWidth,[])
link(onEvent2,12541365:doWidth,[(187,76)(187,174)])
}
Add(Image,12541365,210,147)
{
Left=0
Top=25
Width=1490
Height=360
Align=0
Color=-16777192
Font=[MS Sans Serif,8,0,0,1]
ParentFont=1
Visible=0
Enabled=0
Cursor=7
KeyPreview=0
TabOrder=0
Ctl3D=1
WinStyle=0
Name=""
Hint=""
HintManager="(empty)"
Layout="(empty)"
WidthScale=0
HeightScale=0
ModeSp=0
SizeSp=4
ColorSp=-16777201
MinOwn=0
MinRest=0
AutoSize=1
ViewStyle=4
Picture=[]
HalfTone=0
MouseCapture=1
Point(Height)
Point(Width)
Point(MouseX)
Point(MouseY)
Point(doRefresh)
Point(doWidth)
link(Bitmap,16151129:Var1,[(216,131)])
}
Add(PaintBox,1107824,287,49)
{
Left=0
Top=20
Width=1
Height=360
Align=0
Color=-16777192
Font=[MS Sans Serif,8,0,0,1]
ParentFont=1
Visible=1
Enabled=0
Cursor=0
KeyPreview=0
TabOrder=0
Ctl3D=1
WinStyle=0
Name=""
Hint=""
HintManager="(empty)"
Layout="(empty)"
WidthScale=0
HeightScale=0
ModeSp=0
SizeSp=4
ColorSp=-16777201
MinOwn=0
MinRest=0
MouseCapture=1
ClearBeforeDraw=1
Point(doWidth)
Point(onMouseMove)
Point(onMouseEnter)
Point(onMouseLeave)
Point(Height)
Point(Width)
Point(MouseX)
Point(MouseY)
}
Add(Hub,1184509,168,42)
{
InCount=1
OutCount=2
link(onEvent1,1107824:doRefresh,[(234,48)(234,55)])
link(onEvent2,12541365:doLoad,[(196,55)(196,153)])
}
END_SDK
Add(CableWorkNamed,10162933,329,462)
{
Wire=#9:doRefresh|7:doClear|7:doWidth|
GroupName=""
link(Cable,13302423:doWork1,[])
}
Add(CableVarNamed,4356355,378,511)
{
Wire=#6:Bitmap|6:Height|5:Width|6:MouseX|6:MouseY|6:Handle|5:Image|
GroupName=""
link(Cable,13302423:Var1,[])
}
Add(LineBreakEx,6159230,378,658)
{
@Color=11206655
Caption="BITMAP"
Type=3
link(_Data,4356355:Bitmap,[])
}
Add(LineBreakEx,13827432,385,644)
{
@Color=11206655
Caption="bmpH"
Type=3
link(_Data,4356355:Height,[])
}
Add(LineBreakEx,15740734,392,630)
{
@Color=11206655
Caption="bmpW"
Type=3
link(_Data,4356355:Width,[])
}
Add(LineBreakEx,9044414,399,616)
{
@Color=11206655
Caption="MouseX"
Type=3
link(_Data,4356355:MouseX,[])
}
Add(LineBreakEx,6401253,406,602)
{
@Color=11206655
Caption="MouseY"
Type=3
link(_Data,4356355:MouseY,[])
}
Add(LineBreakEx,7691738,413,588)
{
@Color=11206655
Caption="bmpHandle"
Type=3
link(_Data,4356355:Handle,[])
}
Add(LineBreakEx,13197481,210,462)
{
@Color=11206655
Caption="doBmpRefr"
Type=1
link(OnEvent,10162933:doRefresh,[])
}
Add(LineBreakEx,8340680,203,476)
{
@Color=11206655
Caption="doBmpClear"
Type=1
link(OnEvent,10162933:doClear,[(298,482)(298,475)])
}
Add(LineBreakEx,6830020,196,490)
{
@Color=11206655
Caption="doBmpWidth"
Type=1
link(OnEvent,10162933:doWidth,[(305,496)(305,482)])
}
Add(LineBreakEx,12673905,420,574)
{
@Color=11206655
Caption="Image"
Type=3
link(_Data,4356355:Image,[])
}
Add(LineBreakEx,4905847,819,231)
{
@Color=11206655
Caption="TblFmsCount"
Type=2
}
Add(Hub,11680953,707,273)
{
InCount=1
OutCount=5
link(onEvent1,13888256:doData,[])
link(onEvent2,8108376:doWork,[(802,286)(802,321)])
link(onEvent3,15134537:doWork,[(791,293)(791,335)])
link(onEvent4,99992:doReset,[(780,300)(780,398)])
link(onEvent5,11652463:doTimer,[(771,307)(771,370)])
}
Add(LineBreakEx,6442979,875,273)
{
@Color=11206655
Caption="doBmpWidth"
Type=0
}
Add(DoData,13888256,819,273)
{
Data=Null()
link(onEventData,6442979:doWork,[])
link(Data,4905847:getVar,[])
}
Add(LineBreakEx,8108376,840,315)
{
@Color=11206655
Caption="doBmpClear"
Type=0
}
Add(LineBreakEx,15590846,1603,112)
{
@Color=11206655
Caption="bmpH"
Type=2
}
Add(Img_Line,9821245,1540,217)
{
@Color=43775
Point1=0
Point2=0
Point2AsOffset=1
DrawSource=0
LineStyle=2
Size=1
Color=12632256
Point(Point1)
Point(Point2)
link(Bitmap,1528652:getVar,[])
link(Point1,4688886:Point,[])
link(Point2,16588597:Point,[(1560,201)(1602,201)])
}
Add(LineBreakEx,1528652,1540,77)
{
@Color=11206655
Caption="BITMAP"
Type=2
}
Add(PointXY,16588597,1596,154)
{
X=0
Y=0
link(X,3393519:Var3,[(1602,138)])
link(Y,15590846:getVar,[])
}
Add(DoData,8735157,1491,217)
{
Data=Null()
link(onEventData,9821245:doDraw,[])
}
Add(PointXY,4688886,1547,154)
{
X=0
Y=0
link(X,3393519:Var2,[])
link(Y,4591871:Text,[])
}
Add(Math,11404502,1232,469)
{
OpType=35
Op1=0
Op2=250
ResultType=1
Default=0
AngleMode=0
link(onResult,10391771:doData,[])
link(Op1,10890359:getVar,[])
}
Add(Hub,16553124,1134,392)
{
InCount=1
OutCount=3
link(onEvent1,8735157:doData,[(1162,398)(1162,223)])
link(onEvent2,7946582:doOperation,[(1208,405)(1208,321)])
link(onEvent3,11404502:doOperation,[(1162,412)(1162,475)])
}
Add(LineBreakEx,12795390,1659,364)
{
@Color=11206655
Caption="bmpH"
Type=2
}
Add(Img_Line,860259,1596,469)
{
@Color=5614335
Point1=0
Point2=0
Point2AsOffset=1
DrawSource=0
LineStyle=0
Size=2
Color=12632256
Point(Point1)
Point(Point2)
link(Bitmap,13237903:getVar,[])
link(Point1,9343222:Point,[])
link(Point2,7757938:Point,[(1616,453)(1658,453)])
}
Add(LineBreakEx,13237903,1596,350)
{
@Color=11206655
Caption="BITMAP"
Type=2
}
Add(PointXY,7757938,1652,406)
{
X=0
Y=0
link(X,15808237:Var3,[(1658,390)])
link(Y,12795390:getVar,[])
}
Add(PointXY,9343222,1603,406)
{
X=0
Y=0
link(X,15808237:Var2,[])
link(Y,1463611:Text,[])
}
Add(GetDataEx,15808237,1603,385)
{
Angle=3
link(Data,11404502:Result,[(1270,390)(1270,514)(1238,514)])
}
Add(DoData,15676495,1554,469)
{
Data=Null()
link(onEventData,860259:doDraw,[])
}
Add(ChangeMon,10391771,1281,469)
{
Data=Null()
link(onData,11329564:doEvent1,[])
}
Add(LineBreakEx,15134537,840,329)
{
@Color=11206655
Caption="doBmpRefr"
Type=0
}
Add(CounterEx,99992,959,385)
{
Min=0
Max=2160000
Step=25
Direct=0
Default=0
Point(doReset)
link(onNext,6890456:doBetween,[])
}
Add(Between,6890456,1008,385)
{
Data=Null()
Left=Null()
Right=Null()
InBorders=2
link(Data,13428280:getVar,[])
link(Left,5437669:Value,[])
link(Right,1752257:getVar,[])
link(onFalse,16590498:doEvent1,[(1073,391)(1073,405)])
link(onTrue,16553124:doEvent1,[])
}
Add(LineBreakEx,1752257,1022,336)
{
@Color=11206655
Caption="bmpW"
Type=2
}
Add(MMTimer,11652463,896,364)
{
Resolution=1
Interval=1
Enable=1
AutoStop=0
Point(onStop)
link(onTimer,99992:doNext,[(940,370)(940,391)])
}
Add(VisualStrings,1463611,1610,364)
{
Lines=#1:0|
Width=32
Height=18
Font=[MS Sans Serif,8,0,0,1]
}
Add(Hub,16590498,1085,399)
{
InCount=1
OutCount=2
link(onEvent1,11652463:doStop,[(1120,405)(1120,431)(880,431)(880,377)])
link(onEvent2,15839208:doWork,[(1109,412)(1109,510)])
}
Add(Memory,5437669,1015,301)
{
Default=Real(0)
}
Add(LineBreakEx,8228590,581,322)
{
@Color=11206655
Caption="doDrawData"
Type=1
link(OnEvent,11680953:doEvent1,[(684,328)(684,279)])
}
Add(Img_Text,15886281,1484,616)
{
X=0
Y=1
DrawSource=0
Font=[Segoe UI Light,8,0,0,0]
Orientation=0
Text=""
Point(X)
Point(Y)
link(Bitmap,12836429:getVar,[])
link(Text,16651477:getVar,[])
link(X,12455799:Result,[(1504,604)(1479,604)(1479,661)(1392,661)])
}
Add(LineBreakEx,12836429,1484,567)
{
@Color=11206655
Caption="BITMAP"
Type=2
}
Add(LineBreakEx,16651477,1491,581)
{
@Color=11206655
Caption="TC"
Type=2
}
Add(LineBreakEx,95037,1442,511)
{
@Color=11206655
Caption="doFrm-TC"
Type=0
}
Add(Hub,11329564,1323,469)
{
InCount=1
OutCount=3
link(onEvent1,15676495:doData,[])
link(onEvent2,6202900:doValue,[(1352,482)(1352,517)])
link(onEvent3,12455799:doOperation,[(1345,489)(1345,622)])
}
Add(DoData,957383,1435,616)
{
Data=Null()
link(onEventData,15886281:doDraw,[])
}
Add(LineBreakEx,1735090,959,441)
{
@Color=11206655
Caption="counter"
Type=3
link(_Data,99992:Count,[])
}
Add(LineBreakEx,13428280,1008,280)
{
@Color=11206655
Caption="counter"
Type=2
}
Add(LineBreakEx,5776459,1547,91)
{
@Color=11206655
Caption="counter"
Type=2
}
Add(GetDataEx,3393519,1547,133)
{
Angle=0
link(Data,5776459:getVar,[])
}
Add(LineBreakEx,10890359,1232,434)
{
@Color=11206655
Caption="counter"
Type=2
}
Add(Memory,6202900,1386,511)
{
Default=Null()
link(onData,95037:doWork,[])
}
Add(Math,12455799,1386,616)
{
OpType=1
Op1=0
Op2=27
ResultType=1
Default=0
AngleMode=0
link(onResult,957383:doData,[])
link(Op1,6202900:Value,[])
}
Add(VisualStrings,4591871,1554,105)
{
Lines=#1:0|
Width=32
Height=18
Font=[MS Sans Serif,8,0,0,1]
}
Add(LineBreakEx,655014,441,287)
{
@Color=11206655
Caption="TblFmsCount"
Type=3
link(_Data,2997351:Count,[])
}
Add(LineBreakEx,894263,462,266)
{
@Color=11206655
Caption="TblStrings"
Type=3
link(_Data,2997351:Strings,[])
}
Add(Hub,3735057,2093,140)
{
InCount=1
OutCount=5
link(onEvent1,15899195:doOperation,[])
link(onEvent2,13184358:doCalc,[(2137,153)(2137,195)])
link(onEvent3,9849111:doCalc,[(2129,160)(2129,237)])
link(onEvent4,15257214:doCalc,[(2124,167)(2124,279)])
link(onEvent5,9010776:doString,[(2118,174)(2118,321)])
}
Add(MathParse,9849111,2135,231)
{
DataCount=3
MathStr="(%1 - (%2 * 90000) - (%3 * 1500)) div 25"
ResultType=0
Default=0
AngleMode=0
ExtNames=0
link(onResult,8658317:doConvert,[])
link(X2,1426105:Var2,[])
link(X3,13184358:Result,[])
}
Add(FormatStr,9010776,2240,315)
{
DataCount=4
Mask="%1:%2:%3:%4"
Point(FString)
link(Str1,235247:Value,[])
link(Str2,1392943:Value,[])
link(Str3,13513660:Value,[])
link(Str4,6716259:Value,[])
}
Add(Memory,6716259,2261,273)
{
Default=Null()
}
Add(Convertor,378817,2198,273)
{
Mode=0
Digits=2
SymbolFill="0"
DirectFill=0
Word_1=""
Word_2=""
Word_5=""
link(onResult,6716259:doValue,[])
}
Add(Memory,13513660,2254,231)
{
Default=Null()
}
Add(Convertor,8658317,2198,231)
{
Mode=0
Digits=2
SymbolFill="0"
DirectFill=0
Word_1=""
Word_2=""
Word_5=""
link(onResult,13513660:doValue,[])
}
Add(Memory,1392943,2247,189)
{
Default=Null()
}
Add(Convertor,15656307,2198,189)
{
Mode=0
Digits=2
SymbolFill="0"
DirectFill=0
Word_1=""
Word_2=""
Word_5=""
link(onResult,1392943:doValue,[])
}
Add(Memory,235247,2240,140)
{
Default=Null()
}
Add(Convertor,15216268,2198,140)
{
Mode=0
Digits=2
SymbolFill="0"
DirectFill=0
Word_1=""
Word_2=""
Word_5=""
link(onResult,235247:doValue,[])
}
Add(MathParse,15257214,2135,273)
{
DataCount=3
MathStr="%1 mod 25"
ResultType=0
Default=0
AngleMode=0
ExtNames=0
link(onResult,378817:doConvert,[])
}
Add(MathParse,13184358,2149,189)
{
DataCount=2
MathStr="(%1 - %2 * 90000) div 1500"
ResultType=0
Default=0
AngleMode=0
ExtNames=0
link(onResult,15656307:doConvert,[])
link(X2,1426105:Var3,[(2162,180)])
}
Add(Math,15899195,2142,140)
{
@Hint=#12:%1 div 90000|
OpType=7
Op1=0
Op2=90000
ResultType=0
Default=0
AngleMode=0
link(onResult,15216268:doConvert,[])
}
Add(GetDataEx,1426105,2142,175)
{
Angle=0
link(Data,15899195:Result,[])
}
Add(LineBreakEx,13051232,2240,371)
{
@Color=11206655
Caption="TC"
Type=3
link(_Data,9010776:FString,[])
}
Add(InfoTip,1584680,1995,77)
{
Info=#18:Frames & TimeCodes|
Font=[MS Sans Serif,8,1,0,1]
Frame=0
Transparent=0
VAlign=0
HAlign=0
Width=323
Height=312
Margin=5
}
Add(LineBreakEx,4856340,2002,140)
{
@Color=11206655
Caption="doFrm-TC"
Type=1
link(OnEvent,3735057:doEvent1,[])
}
Add(LineBreakEx,14154840,490,322)
{
@Color=11206655
Caption="doDrawData"
Type=0
}
Add(LineBreakEx,15839208,1120,504)
{
@Color=11206655
Caption="doBmpRefr"
Type=0
}
Add(Img_Point,1734841,1365,315)
{
X=0
Y=50
DrawSource=0
Color=65280
Size=2
Point(X)
link(Bitmap,9359589:getVar,[])
link(X,7946582:Result,[(1378,303)(1307,303)(1307,359)(1266,359)])
}
Add(DoData,15209741,1316,315)
{
Data=Null()
link(onEventData,1734841:doDraw,[])
}
Add(LineBreakEx,9359589,1365,273)
{
@Color=11206655
Caption="BITMAP"
Type=2
}
Add(LineBreakEx,7385887,1260,273)
{
@Color=11206655
Caption="counter"
Type=2
}
Add(Math,7946582,1260,315)
{
OpType=0
Op1=0
Op2=10
ResultType=1
Default=0
AngleMode=0
link(onResult,15209741:doData,[])
link(Op1,7385887:getVar,[])
}
Add(InfoTip,7735244,1582,210)
{
Info=#37:Вертикальные линии не прорисовываются|19:после 21 мин 50 сек|30:00:21:50:17 PAL = 32767 кадров|
Font=[MS Sans Serif,8,0,0,1]
Frame=0
Transparent=0
VAlign=0
HAlign=0
Width=218
Height=81
Margin=5
}
Add(InfoTip,5207308,1638,476)
{
Info=#37:Вертикальные линии не прорисовываются|19:после 21 мин 50 сек|30:00:21:50:17 PAL = 32767 кадров|
Font=[MS Sans Serif,8,0,0,1]
Frame=0
Transparent=0
VAlign=0
HAlign=0
Width=218
Height=81
Margin=5
}
Add(InfoTip,7088144,1414,315)
{
Info=#39:Зеленые точки прорисовываются до конца |
Font=[MS Sans Serif,8,1,0,1]
Frame=0
Transparent=0
VAlign=0
HAlign=0
Width=176
Height=46
Margin=5
}
Add(InfoTip,1346298,1533,609)
{
Info=#27:текстовые временные отметки|25:прорисовываются до конца |
Font=[MS Sans Serif,8,0,0,1]
Frame=0
Transparent=0
VAlign=0
HAlign=0
Width=218
Height=53
Margin=5
}
Add(InfoTip,16006318,189,42)
{
Info=#28:180000 кадров соответствует |17:2 часам видео PAL|
Font=[MS Sans Serif,8,1,0,1]
Frame=0
Transparent=0
VAlign=0
HAlign=0
Width=218
Height=67
Margin=5
}
Add(Hub,16651495,154,147)
{
InCount=1
OutCount=2
link(onEvent1,13955729:doOn,[(236,153)(236,181)])
link(onEvent2,8453259:doTimer,[(178,160)(178,209)])
}
Add(Timer,8453259,189,203)
{
Interval=1
Enable=1
AutoStop=1
OverCall=0
Point(onStop)
link(onStop,10809443:doFor,[])
}


По окончании картинка благополучно сохраняется в PNG. С дорисованными до конца данных графиками точками и текстом. Но уже без вертикальных отметок после 00:21:50:00

Гуру, посоветуйте как снять ограничение.
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26061
Рейтинг: 2120
#2: 2017-12-14 22:42:52 ЛС | профиль | цитата
vovcheck писал(а):
Гуру, посоветуйте как снять ограничение.

Для всех графических компонентов, где присутствует свойство Point, снять эти ограничения не представляется возможным, тк используется упакованные координаты размерностью smallint, те максимум 32768 пикселей.

Редактировалось 1 раз(а), последний 2017-12-14 22:43:09
карма: 22

0
Ответов: 49
Рейтинг: 11
#3: 2017-12-15 01:12:57 ЛС | профиль | цитата
Спсибо, nesco.

Решить задачу нужно, но не прорисовывать же линии сериями точек.
Вариант иметь битмап шириной в 1 пиксел, но графические результаты анализа должны будут содержать много вертикальных линий разного цвета, высоты и толщины - в зависимости от входных данных. Неудобное решение.

Насколько сложно реализовать это на динамическом ChildPanelEx с вложенным PaintBox максимальной ширины 32768, например:

Add(Math,7535504,217,126)
{
OpType=7
Op2=32768
link(onResult,15999700:doWork,[])
link(Op1,9229955:Var3,[(223,110)])
}
Add(Math,12397622,217,210)
{
OpType=8
Op2=32768
link(onResult,6614508:doWork,[])
link(Op1,9229955:Var2,[(223,202)(195,202)])
}
Add(LineBreakEx,10277255,189,77)
{
@Color=11206655
Caption="counter"
Type=2
}
Add(GetDataEx,9229955,189,105)
{
link(Data,10277255:getVar,[])
}
Add(LineBreakEx,15999700,308,126)
{
@Color=11206655
Caption="doPaintBox#"
}
Add(LineBreakEx,6614508,266,210)
{
@Color=11206655
Caption="doThisPaintBoxWidth"
}
Add(Hub,14935006,140,126)
{
link(onEvent1,7535504:doOperation,[])
link(onEvent2,12397622:doOperation,[(188,139)(188,216)])
}
Add(CounterEx,9839346,84,126)
{
Max=2160000
Step=25
Point(doReset)
link(onNext,14935006:doEvent1,[])
}
Add(LineBreakEx,2139466,84,182)
{
@Color=11206655
Caption="counter"
Type=3
link(_Data,9839346:Count,[])
}
Add(ChildPanelEx,1907162,623,126)
{
}
BEGIN_SDK
Add(EditMultiEx,13588280,21,21)
{
WorkCount=#5:##add|8:##select|7:##clear|9:doRefresh|7:doClear|19:doThisPaintBoxWidth|
VarCount=#6:Bitmap|
Point(##add)
Point(##select)
Point(##clear)
link(doRefresh,1107824:doRefresh,[])
link(doClear,1107824:doClear,[])
link(doThisPaintBoxWidth,1107824:doWidth,[])
link(Bitmap,1107824:Bitmap,[(27,151)(111,151)])
}
Add(Panel,3909781,35,105)
{
Left=35
Top=105
}
Add(PaintBox,1107824,105,42)
{
Top=20
Width=1
Height=360
Color=-16777192
Visible=1
Point(doWidth)
Point(onMouseMove)
Point(onMouseEnter)
Point(onMouseLeave)
Point(Height)
Point(Width)
Point(MouseX)
Point(MouseY)
}
END_SDK
Add(LineBreakEx,13344450,427,126)
{
@Color=11206655
Caption="doPaintBox#"
Type=1
link(OnEvent,6709196:doData,[])
}
Add(ChangeMon,6709196,539,126)
{
link(onData,1907162:##add,[])
}
Add(LineBreakEx,5068162,434,210)
{
@Color=11206655
Caption="doThisPaintBoxWidth"
Type=1
link(OnEvent,1907162:doThisPaintBoxWidth,[(590,216)(590,167)])
}


Затем последовательно копировать содержимое каждого полученного PaintBox в Image уже нужной ширины по соответствующим координатам через Img_Copy.

Как думаете, не слишком громоздко выйдет?
Может, уже есть более компактное решение, просто я на форуме не нашел?
карма: 1

0
Ответов: 8886
Рейтинг: 823
#4: 2017-12-15 17:51:33 ЛС | профиль | цитата
vovcheck, ну ведь для анализа все 40000 линий одновременно и не нужны, может записывать их в текстовом виде, а на график извлекать сколько и откуда нужно для анализа
примерно так


Add(MainForm,2953706,182,70)
{
Width=396
Caption="Гистограмма"
link(onCreate,7008399:doEvent1,[])
}
Add(ChildPanel,8411737,203,119)
{
link(onEvent1,16745152:doWork2,[])
link(onEvent2,1741739:doEvent1,[(242,132)(242,139)(151,139)(151,188)])
}
BEGIN_SDK
Add(EditMulti,4422770,21,21)
{
EventCount=2
VarCount=3
Width=727
Height=228
link(Var1,14032346:Var2,[])
link(Var2,12828661:Result,[(34,191)(69,191)])
link(Var3,6281196:Var1,[(41,68)])
}
Add(Panel,11450189,77,28)
{
Width=85
Height=260
Align=1
}
Add(Button,11340133,126,77)
{
Left=15
Top=27
Caption="New"
link(onClick,2491245:doData,[])
}
Add(Edit,8143817,175,28)
{
Left=10
Top=5
Width=70
Text="500000"
DataType=2
ClearAfterEnter=1
link(onEnter,15232565:doWork2,[])
}
Add(DoData,2491245,175,77)
{
link(onEventData,15232565:doWork3,[(223,83)])
link(Data,11795377:Var2,[])
}
Add(ScrollBar,8095244,154,133)
{
Left=10
Top=70
Width=15
Height=185
Max=1999500
Page=500
Kind=1
Point(doMax)
link(onPosition,5088880:doEvent1,[])
}
Add(ScrollBar,3977256,434,133)
{
Left=45
Top=70
Width=15
Height=185
Max=2048
Min=200
Page=50
Position=500
Kind=1
ScrollMode=1
link(onPosition,4676388:doEvent1,[])
}
Add(Label,299754,126,28)
{
Left=10
Top=55
Width=68
Height=17
Caption="Нач. Длина"
}
Add(Label,15802809,413,196)
{
Left=27
Top=95
Width=10
Height=160
Caption="0"
AutoSize=1
Alignment=2
}
Add(Label,13607126,700,196)
{
Left=67
Top=95
Width=10
Height=160
Caption="5 0 0"
AutoSize=1
Alignment=2
}
Add(Hub,12021135,238,35)
{
link(onEvent1,2211104:doWork1,[(263,41)])
link(onEvent2,4422770:onEvent1,[(270,48)(270,27)])
}
Add(HubEx,15232565,219,35)
{
link(onEvent,12021135:doEvent1,[])
}
Add(Math,8484617,112,140)
{
OpType=1
ResultType=0
link(onResult,8095244:doMax,[])
link(Op1,6281196:Var2,[])
link(Op2,7266824:Var2,[])
}
Add(GetDataEx,11795377,175,63)
{
link(Data,8143817:Text,[])
}
Add(Str_Enum,8347021,518,140)
{
Delimiter=""
link(onEnum,6799976:doEvent1,[])
link(onEndEnum,6637964:doTrim,[(557,153)(557,202)])
}
Add(StrCat,9866173,658,140)
{
Point(doClear)
link(Str1,7271597:Var1,[(664,131)(650,131)(650,180)])
}
Add(Hub,4676388,476,133)
{
OutCount=4
link(onEvent1,9866173:doClear,[(627,139)(627,153)])
link(onEvent2,8347021:doEnum,[])
link(onEvent3,2211104:doWork2,[(499,153)(499,118)])
link(onEvent4,16430134:doWork2,[])
}
Add(Hub,6799976,560,140)
{
link(onEvent1,2900226:doWork2,[])
link(onEvent2,1219089:doData,[])
}
Add(DoData,1219089,588,147)
{
Data=String( )
link(onEventData,2900226:doWork3,[(627,153)])
}
Add(HubEx,2900226,623,140)
{
link(onEvent,9866173:doStrCat,[])
}
Add(GetDataEx,7271597,658,175)
{
link(Data,9866173:Result,[])
}
Add(Str_Enum,6788473,231,140)
{
Delimiter=""
link(onEnum,14284788:doEvent1,[])
link(onEndEnum,11593011:doTrim,[(270,153)(270,202)])
}
Add(StrCat,3168839,371,140)
{
Point(doClear)
link(Str1,8485138:Var1,[(377,131)(363,131)(363,180)])
}
Add(Hub,5088880,196,133)
{
OutCount=4
link(onEvent1,3168839:doClear,[(382,139)(382,153)])
link(onEvent2,6788473:doEnum,[])
link(onEvent3,15663286:doWork3,[(221,153)])
link(onEvent4,16430134:doWork3,[(219,160)(219,238)(508,238)])
}
Add(Hub,14284788,273,140)
{
link(onEvent1,342033:doWork2,[])
link(onEvent2,12945163:doData,[])
}
Add(DoData,12945163,301,147)
{
Data=String( )
link(onEventData,342033:doWork3,[(340,153)])
}
Add(HubEx,342033,336,140)
{
link(onEvent,3168839:doStrCat,[])
}
Add(GetDataEx,8485138,371,175)
{
link(Data,3168839:Result,[])
}
Add(Trim,6637964,658,196)
{
Char=" "
link(onTrim,13607126:doText,[])
link(Text,7271597:Var2,[])
}
Add(Trim,11593011,371,196)
{
Char=" "
link(onTrim,15802809:doText,[])
link(Text,8485138:Var2,[])
}
Add(HubEx,16430134,504,154)
{
Angle=3
link(onEvent,4422770:onEvent2,[(508,34)])
}
Add(HubEx,2211104,259,112)
{
Angle=2
link(onEvent,15663286:doWork2,[])
}
Add(GetDataEx,6281196,112,63)
{
Angle=1
link(Data,11795377:Var1,[])
}
Add(Math,12828661,63,140)
{
link(onResult,8484617:doOperation,[])
link(Op1,14032346:Var3,[(69,124)(27,124)])
link(Op2,7266824:Var1,[(76,124)])
}
Add(GetDataEx,7266824,119,119)
{
Angle=1
link(Data,3977256:Position,[(423,124)(423,172)(440,172)])
}
Add(GetDataEx,14032346,21,175)
{
Angle=1
link(Data,8095244:Position,[(160,180)])
}
Add(HubEx,15663286,217,112)
{
Angle=2
link(onEvent,12828661:doOperation,[(53,118)(53,146)])
}
END_SDK
Add(StrList,5664573,329,112)
{
}
Add(Hub,7008399,224,84)
{
link(onEvent1,16206074:doRendomize,[(256,90)(256,118)])
link(onEvent2,16745152:doWork1,[(249,97)])
}
Add(HubEx,16745152,245,119)
{
link(onEvent,16206074:doWork,[])
}
Add(Image,6616524,476,329)
{
Left=85
Width=295
Height=262
Align=5
Color=-16777208
ViewStyle=1
link(Bitmap,2455303:Var3,[(482,271)])
}
Add(MultiElementEx,16206074,273,112)
{
@Hint=#28:Генерация случайного образца|
link(onStr,5664573:doAdd,[])
link(onClear,5664573:doClear,[])
link(Numb,8411737:Var3,[(279,103)(265,103)(265,159)(223,159)])
}
BEGIN_SDK
Add(EditMultiEx,5644918,21,21)
{
WorkCount=#11:doRendomize|6:doWork|
EventCount=#5:onStr|7:onClear|
DataCount=#4:Numb|
Width=524
Height=123
HOffset=56
link(doRendomize,9902281:doRandomize,[(116,27)(116,76)])
link(doWork,341748:doEvent1,[(32,34)(32,62)])
}
Add(For,6173872,70,63)
{
Start=1
InData=0
link(onEvent,9902281:doRandom,[])
link(End,5644918:Numb,[])
}
Add(Hub,341748,42,56)
{
link(onEvent1,5644918:onClear,[(109,62)(109,34)])
link(onEvent2,6173872:doFor,[])
}
Add(Random,9902281,126,63)
{
Min=50
Max=256
link(onRandom,11977353:doRandom,[])
}
Add(Random,11977353,175,63)
{
Min=1
Max=5
link(onRandom,10528299:doRandom,[])
}
Add(Random,10528299,224,63)
{
Max=16777215
link(onRandom,9007927:doRandom,[])
}
Add(InfoTip,9012937,126,42)
{
Info=#35:Высота Ширина Цвет Текст|
HAlign=0
Width=183
Height=18
}
Add(FormatStr,6218275,490,63)
{
DataCount=4
Mask="%1;%2;%3;%4"
link(onFString,5644918:onStr,[(530,69)(530,27)])
link(Str1,9902281:Random,[(496,54)(483,54)(483,118)(132,118)])
link(Str2,11977353:Random,[(503,47)(475,47)(475,110)(181,110)])
link(Str3,10528299:Random,[(510,40)(467,40)(467,103)(230,103)])
}
Add(Random,9007927,280,63)
{
link(onRandom,4706705:doCompare,[])
}
Add(If_else,4706705,329,63)
{
Type=2
Op2=Integer(1)
link(onTrue,8377940:doData,[])
link(onFalse,9359305:doData,[])
}
Add(DoData,9359305,378,70)
{
Data=String(Текст)
link(onEventData,1293599:doWork3,[(459,76)])
}
Add(DoData,8377940,420,63)
{
Data=String()
link(onEventData,1293599:doWork2,[])
}
Add(HubEx,1293599,455,63)
{
link(onEvent,6218275:doString,[])
}
END_SDK
Add(Bitmap,1676343,413,231)
{
HHeight=270
FillColor=-16777211
Point(HWidth)
Point(doCreate)
Point(Height)
link(HWidth,5986292:Value,[(419,222)(405,222)(405,285)(370,285)])
}
Add(For,8252738,203,189)
{
link(onEvent,4927934:doRead,[])
link(onStop,15544807:doEvent1,[(252,202)(252,244)])
link(Start,8999999:Var2,[])
link(End,4212705:Var2,[])
}
Add(Hub,1741739,161,182)
{
link(onEvent1,649937:doClear,[(361,188)(361,202)])
link(onEvent2,8252738:doFor,[])
}
Add(ArrayRW,4927934,266,189)
{
link(onRead,8334897:doSplit,[])
link(Array,15044521:Var2,[])
}
Add(MultiStrPart,8334897,308,189)
{
Count=3
link(onSplit,649937:doOperation,[])
}
Add(Math,649937,364,189)
{
Point(doClear)
link(Op1,8334897:Part2,[(370,180)(356,180)(356,229)(321,229)])
link(Op2,3681249:Var3,[(377,180)(384,180)(384,229)])
}
Add(Hub,15544807,315,238)
{
OutCount=5
link(onEvent1,1676343:doClear,[])
link(onEvent2,5986292:doValue,[])
link(onEvent3,6094764:doOperation,[(355,258)(355,293)])
link(onEvent4,1118030:doClear,[(348,265)(348,405)])
link(onEvent5,12374866:doFor,[(340,272)(340,279)(172,279)(172,300)])
}
Add(GetDataEx,3681249,364,224)
{
link(Data,649937:Result,[])
}
Add(Memory,5986292,364,245)
{
Point(Data)
link(onData,1676343:doCreate,[])
link(Data,3681249:Var2,[])
}
Add(For,12374866,182,294)
{
link(onEvent,900600:doRead,[])
link(onStop,6616524:doLoad,[(228,307)(228,335)])
link(Start,8999999:Var1,[(188,173)])
link(End,4212705:Var1,[(195,180)])
}
Add(GetDataEx,4212705,210,175)
{
link(Data,8411737:Var2,[])
}
Add(GetDataEx,8999999,203,168)
{
link(Data,8411737:Var1,[])
}
Add(ArrayRW,900600,238,294)
{
link(onRead,14236170:doSplit,[])
link(Array,15044521:Var1,[(244,166)])
}
Add(MultiStrPart,14236170,280,294)
{
Count=4
link(onSplit,11163429:doCalc,[(319,300)(319,286)(221,286)(221,398)])
}
Add(GetDataEx,15044521,266,161)
{
Angle=1
link(Data,5664573:Array,[(349,166)])
}
Add(Img_Line,3512096,371,392)
{
Point2AsOffset=0
Point(Point1)
Point(Point2)
Point(Size)
Point(Color)
link(onDraw,1118030:doOperation,[])
link(Bitmap,140709:Var2,[])
link(Point1,11163429:Result,[(384,382)(336,382)(336,444)(237,444)])
link(Point2,6094764:Result,[(391,355)(447,355)])
link(Size,16285423:Var2,[])
link(Color,14236170:Part3,[(405,348)(300,348)])
}
Add(MathParse,11163429,231,392)
{
DataCount=3
MathStr="(%1 - %2)*65536 + %3"
ResultType=0
link(onResult,765187:doEvent1,[])
link(X1,14214538:Var2,[])
link(X2,242946:Var2,[])
link(X3,899942:Var1,[(251,369)])
}
Add(Math,1118030,427,392)
{
Point(doClear)
link(Op1,16285423:Var3,[(433,363)])
link(Op2,899942:Var3,[(440,369)])
}
Add(GetDataEx,16285423,392,358)
{
Angle=3
link(Data,14236170:Part2,[(293,363)])
}
Add(GetDataEx,899942,413,364)
{
Angle=2
link(Data,5384406:Var3,[])
}
Add(Math,6094764,441,287)
{
OpType=2
Op2=65536
ResultType=0
link(Op1,15038766:Var3,[(447,278)])
}
Add(GetDataEx,15038766,420,273)
{
link(Data,1676343:Height,[])
}
Add(GetDataEx,2455303,413,266)
{
link(Data,1676343:Bitmap,[])
}
Add(Img_Text,1730889,357,462)
{
Font=[Times New Roman,14,1,0,204]
Point(X)
Point(Y)
link(Bitmap,140709:Var1,[(363,299)])
link(Text,10144712:Var3,[(370,453)])
link(X,5384406:Var1,[(377,432)])
link(Y,11329811:Result,[(384,453)(398,453)(398,502)(314,502)])
}
Add(GetDataEx,140709,371,294)
{
Angle=1
link(Data,2455303:Var2,[(419,299)])
}
Add(GetDataEx,5384406,413,427)
{
Angle=1
link(Data,1118030:Result,[(433,432)])
}
Add(Math,11329811,308,462)
{
OpType=1
link(onResult,1730889:doDraw,[])
link(Op1,14214538:Var3,[(314,383)])
link(Op2,242946:Var3,[(321,376)])
}
Add(GetDataEx,14214538,231,378)
{
link(Data,15038766:Var2,[(237,341)(426,341)])
}
Add(GetDataEx,242946,238,371)
{
link(Data,14236170:Part1,[(244,348)(286,348)])
}
Add(If_else,16379917,259,462)
{
Type=5
Op2=String()
link(onTrue,11329811:doOperation,[])
link(Op1,10144712:Var1,[(265,453)])
}
Add(GetDataEx,10144712,301,448)
{
link(Data,14236170:Part4,[])
}
Add(Hub,765187,273,392)
{
link(onEvent1,3512096:doDraw,[])
link(onEvent2,16379917:doCompare,[(298,405)(298,440)(249,440)(249,468)])
}

карма: 19

0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)