Вверх ↑
Ответов: 1926
Рейтинг: 172
#1: 2017-11-20 13:39:46 ЛС | профиль | цитата
При таком подходе сильно расходуется память.
1. Даже если у Image ViewStyle=ScaleMin, всё равно внутри компонента остаётся полноразмерная картинка (хоть и отображается миниатюрой). А тут целых 5 штук! Надо просто уменьшать картинки. А ещё лучше - загружать их в отдельном потоке, сохранять миниатюры в массиве и извлекать оттуда при необходимости. Память, конечно, поест, но зато грузить будет быстро.
2. Элементы Transform с картинками лучше не использовать. Масштабировать лучше через тот же компонент Resize, смещение через

Add(MoveWindow,12269346,343,721)
{
}
Тогда PaintBox лучше положить в

Add(ChildScrollBox,14192489,287,714)
{
}
BEGIN_SDK
Add(EditMulti,2972144,21,21)
{
}
Add(ScrollBox,15747465,35,105)
{
Left=35
Top=105
}
END_SDK

Добавил масштабирование при загрузке:

Add(MainForm,3220805,175,231)
{
Width=516
Height=469
}
Add(Image,7975942,1183,252)
{
Left=35
Top=365
Width=85
Height=65
link(onClick,5423092:doWork1,[])
}
Add(Image,16651437,1183,294)
{
Left=120
Top=365
Width=85
Height=65
link(onClick,5423092:doWork2,[(1221,300)(1221,265)])
}
Add(Image,688805,1183,336)
{
Left=210
Top=365
Width=85
Height=65
link(onClick,5423092:doWork3,[(1226,342)(1226,272)])
}
Add(Image,12463613,1183,378)
{
Left=300
Top=365
Width=85
Height=65
link(onClick,5423092:doWork4,[(1232,384)(1232,279)])
}
Add(FileSearch,2629711,308,196)
{
SubDir=1
link(onSearch,11342127:doCompare,[])
link(onEndSearch,4818755:doEvent1,[])
}
Add(StrMask,11342127,406,196)
{
Mask="*.jpg"
link(onFalse,8264849:doCompare,[])
link(onTrue,715656:doWork2,[(449,209)(449,237)])
}
Add(StrMask,8264849,455,196)
{
Mask="*.png"
link(onFalse,11212944:doCompare,[])
link(onTrue,715656:doWork1,[(494,209)])
}
Add(StrMask,11212944,504,196)
{
Mask="*.bmp"
link(onFalse,3744750:doCompare,[])
link(onTrue,11659713:doWork1,[(543,209)])
}
Add(StrMask,3744750,553,196)
{
Mask="*.ico"
link(onTrue,5406705:doWork2,[])
}
Add(Hub,15644038,273,189)
{
InCount=2
link(onEvent1,16253885:doClear,[])
link(onEvent2,2629711:doSearch,[])
}
Add(Browse,9986803,175,189)
{
link(onBrowse,6456784:doText,[])
}
Add(Button,6523879,126,189)
{
Left=15
Caption="Каталог"
link(onClick,9986803:doBrowse,[])
}
Add(Edit,6456784,217,189)
{
Left=80
Width=330
Text=""
link(onChange,15644038:doEvent1,[])
link(onEnter,15644038:doEvent2,[])
}
Add(HubEx,5406705,602,203)
{
Angle=3
link(onEvent,16253885:doAdd,[(606,188)])
}
Add(HubEx,11659713,539,231)
{
link(onEvent,5406705:doWork3,[(606,237)])
}
Add(HubEx,715656,490,231)
{
link(onEvent,11659713:doWork2,[])
}
Add(ArrayRW,7569232,672,357)
{
link(onRead,775386:doAdd,[(713,363)(713,272)])
link(Array,16253885:Array,[(678,234)(643,234)])
}
Add(Button,8546077,126,336)
{
Left=5
Top=380
Width=20
Height=35
Font=[MS Sans Serif,14,1,0,1]
Caption="‹"
link(onClick,14711995:doWork1,[])
}
Add(Button,6923064,175,343)
{
Left=475
Top=380
Width=20
Height=35
Font=[MS Sans Serif,14,1,0,1]
Caption="›"
link(onClick,14711995:doWork2,[])
}
Add(StrList,16253885,623,182)
{
}
Add(MultiElement,14711995,336,336)
{
link(onEvent1,10149431:doEvent1,[])
link(Data1,14994518:Var,[])
}
BEGIN_SDK
Add(EditMulti,3901157,21,21)
{
EventCount=1
WorkCount=2
DataCount=1
VarCount=1
Width=447
Height=151
VOffset=28
HOffset=224
link(doWork1,9816943:doOperation,[])
link(doWork2,7793795:doOperation,[(49,62)(49,118)])
link(Var1,10863678:Value,[(251,157)(419,157)])
}
Add(Math,9816943,77,49)
{
Op2=1
ResultType=0
link(onResult,3221505:doEvent1,[])
link(Op1,5934117:Var1,[(83,37)(66,37)(66,100)])
}
Add(Math,7793795,77,112)
{
OpType=1
Op2=1
ResultType=0
link(onResult,3221505:doEvent2,[(125,118)(125,62)])
link(Op1,5934117:Var2,[])
}
Add(Memory,5625805,196,49)
{
Default=Integer(-1)
link(onData,3694001:doCompare,[])
}
Add(If_else,3694001,238,49)
{
Type=2
link(onTrue,6057581:doOperation,[])
link(onFalse,16067037:doCompare,[])
link(Op2,7730525:Var2,[])
}
Add(Math,6057581,343,49)
{
OpType=1
Op2=1
ResultType=0
link(onResult,3221505:doEvent4,[(384,55)(384,93)(157,93)(157,76)])
link(Op1,7730525:Var3,[(349,39)])
}
Add(Hub,3221505,168,49)
{
InCount=5
OutCount=1
link(onEvent1,5625805:doValue,[])
}
Add(GetDataEx,5934117,77,95)
{
Angle=1
link(Data,5625805:Value,[(202,100)])
}
Add(If_else,16067037,287,56)
{
Type=1
Op2=Integer(0)
link(onTrue,3840909:doOperation,[(325,62)(325,111)])
link(onFalse,10863678:doValue,[])
}
Add(Math,3840909,343,105)
{
Op2=1
ResultType=0
link(onResult,3221505:doEvent3,[(408,111)(408,146)(151,146)(151,69)])
}
Add(GetDataEx,7730525,245,34)
{
link(Data,3901157:Data1,[])
}
Add(Memory,10863678,413,63)
{
Default=Integer(0)
link(onData,3901157:onEvent1,[(456,69)(456,55)])
}
END_SDK
Add(For,4892732,518,357)
{
End=4
link(onEvent,15429747:doOperation,[])
link(onStop,1492010:doEnum,[(569,370)(569,398)])
link(End,11122176:Value,[])
}
Add(LineBreak,1550637,644,252)
{
Type=1
link(Data,13745623:Var3,[(650,243)])
Primary=[14994518,-308,56]
}
Add(Math,15429747,616,357)
{
ResultType=0
link(onResult,7569232:doRead,[])
link(Op2,14711995:Var1,[(629,332)(418,332)(418,382)(342,382)])
}
Add(Image,1542487,1183,420)
{
Left=385
Top=365
Width=85
Height=65
Point(Width)
Point(Height)
link(onClick,5423092:doWork5,[(1239,426)(1239,286)])
}
Add(PaintBox,14075813,532,525)
{
Left=5
Top=25
Width=460
Height=340
Color=16777215
ClearBeforeDraw=0
Point(onMouseDown)
Point(onMouseMove)
Point(MouseX)
Point(MouseY)
link(onBeforeDraw,8191459:In,[])
link(onMouseDown,8845434:In,[])
link(onMouseMove,5742295:In,[])
}
Add(Img_UseOffset,9173318,532,784)
{
link(AddTransform,683094:Var,[])
link(X,929447:Var2,[])
link(Y,14804783:Var1,[(552,747)])
}
Add(Math,401840,539,651)
{
OpType=1
link(onResult,8830839:doOperation,[])
link(Op1,14746427:Var2,[])
link(Op2,12308577:Value,[])
}
Add(Math,8830839,602,651)
{
OpType=1
link(onResult,7746369:doWork3,[(645,657)(645,640)(508,640)])
link(Op1,12309971:Var2,[])
link(Op2,971548:Value,[])
}
Add(Hub,12605675,469,651)
{
OutCount=3
link(onEvent1,401840:doOperation,[])
link(onEvent2,8365796:doOperation,[(511,664)(511,706)])
link(onEvent3,6943504:doWork3,[(487,671)])
}
Add(Memory,12308577,546,602)
{
Point(Data)
link(onData,971548:doValue,[])
link(Data,14746427:Var3,[(552,586)])
}
Add(Memory,971548,609,602)
{
Point(Data)
link(Data,12309971:Var3,[(615,586)])
}
Add(IndexToChanel,12858463,427,651)
{
Count=1
link(onEvent1,12605675:doEvent1,[])
}
Add(IndexToChanel,1721923,427,602)
{
Count=1
link(onEvent1,7746369:doWork2,[])
}
Add(Math,8365796,539,700)
{
link(onResult,11032244:doOperation,[])
link(Op1,401840:Result,[])
link(Op2,929447:Var3,[(552,688)(577,688)(577,740)])
}
Add(Math,11032244,602,700)
{
link(Op1,8830839:Result,[])
link(Op2,14804783:Var3,[(615,688)(639,688)(639,747)])
}
Add(GetDataEx,929447,539,735)
{
link(Data,8365796:Result,[])
}
Add(GetDataEx,14804783,602,742)
{
link(Data,11032244:Result,[])
}
Add(HubEx,7746369,504,602)
{
link(onEvent,12308577:doValue,[])
}
Add(LineBreak,6987084,364,602)
{
Caption="mDown"
link(Out,1721923:doEvent,[])
Primary=[8845434,266,-70]
}
Add(LineBreak,2381832,364,651)
{
Caption="mMove"
link(Out,12858463:doEvent,[])
Primary=[5742295,210,-112]
}
Add(Bitmap,15551347,294,434)
{
Point(Width)
Point(Height)
}
Add(Img_Bmp,44008,518,875)
{
Point(Transform)
link(Bitmap,3081980:Var,[])
link(SourceBitmap,14323944:Var,[])
link(Transform,9173318:Transform,[])
}
Add(GetDataEx,14746427,539,581)
{
link(Data,14075813:MouseX,[])
}
Add(GetDataEx,12309971,602,581)
{
link(Data,14075813:MouseY,[(608,572)(552,572)])
}
Add(LineBreak,5659752,469,875)
{
Caption="draw"
link(Out,44008:doDraw,[])
Primary=[8191459,217,-350]
}
Add(Img_Loader,6103738,175,434)
{
link(onLoad,5630692:doEvent1,[])
}
Add(Hub,5630692,224,434)
{
link(onEvent1,15551347:doLoad,[])
link(onEvent2,6943504:doWork1,[(267,447)(267,511)(487,511)])
}
Add(Img_UseScale,7686788,287,581)
{
link(X,10278308:Var2,[])
link(Y,10278308:Var3,[(307,572)])
}
Add(Math,904991,294,525)
{
OpType=3
Op2=10
Default=1
link(onResult,6943504:doWork2,[])
}
Add(CounterEx,12454032,245,525)
{
Default=10
Point(doPrev)
link(onNext,904991:doOperation,[])
}
Add(HubEx,6943504,483,525)
{
link(onEvent,14075813:doRefresh,[])
}
Add(GetDataEx,10278308,294,567)
{
link(Data,904991:Result,[])
}
Add(LineBreak,10230733,287,623)
{
Type=1
link(Data,7686788:Transform,[])
Primary=[683094,245,133]
}
Add(LineBreak,16463963,504,574)
{
Type=1
link(Data,14075813:Bitmap,[(510,566)(538,566)])
Primary=[3081980,14,252]
}
Add(LineBreak,13300999,294,483)
{
Type=1
link(Data,15551347:Bitmap,[])
Primary=[14323944,231,364]
}
Add(LineBreak,6822358,126,434)
{
link(Out,6103738:doLoad,[])
Primary=[678440,1211,-182]
}
Add(Button,9322339,126,252)
{
Left=425
Caption="Выход"
link(onClick,3220805:doClose,[])
}
Add(Hub,10149431,441,336)
{
InCount=2
OutCount=3
link(onEvent1,15091165:doEvent1,[(697,342)(697,321)])
link(onEvent2,775386:doClear,[])
link(onEvent3,4892732:doFor,[(487,356)(487,363)])
}
Add(Memory,11122176,525,273)
{
Default=Integer(4)
Point(Data)
link(Data,13745623:Var2,[(531,267)(636,267)])
}
Add(If_else,15413539,455,273)
{
Type=3
Op2=Integer(4)
link(onTrue,11122176:doValue,[])
link(Op1,13745623:Var1,[(461,243)])
}
Add(GetDataEx,13745623,630,238)
{
link(Data,16253885:Count,[])
}
Add(Button,11002732,126,525)
{
Left=475
Top=95
Width=20
Height=90
Font=[MS Sans Serif,14,1,0,1]
Caption="+"
link(onClick,12454032:doNext,[])
}
Add(Button,12382933,175,532)
{
Left=475
Top=200
Width=20
Height=90
Font=[MS Sans Serif,14,1,0,1]
Caption="-"
link(onClick,12454032:doPrev,[])
}
Add(Hub,4818755,357,203)
{
link(onEvent1,15413539:doCompare,[(392,209)(392,279)])
link(onEvent2,10149431:doEvent2,[(381,216)(381,349)])
}
Add(StrList,775386,728,266)
{
}
Add(ArrayEnum,1492010,742,392)
{
link(onItem,10806171:doEvent1,[])
link(Array,178217:Var2,[])
}
Add(Img_Loader,5605579,868,392)
{
Point(ImageWidth)
Point(ImageHeight)
link(onLoad,15241465:doWork1,[])
}
Add(IndexToChanel,12724308,1015,392)
{
Count=5
Point(Index)
Point(Data)
link(onEvent1,7975942:doLoad,[(1065,398)(1065,258)])
link(onEvent2,16651437:doLoad,[(1070,405)(1070,300)])
link(onEvent3,688805:doLoad,[(1076,412)(1076,342)])
link(onEvent4,12463613:doLoad,[(1081,419)(1081,384)])
link(onEvent5,1542487:doLoad,[])
link(Index,13249949:Var,[])
}
Add(ChanelToIndex,5423092,1246,252)
{
Count=5
link(onIndex,14608345:doRead,[])
}
Add(ArrayRW,14608345,1288,252)
{
link(onRead,678440:In,[])
link(Array,1404505:Var,[])
}
Add(GetDataEx,178217,742,336)
{
link(Data,775386:Array,[])
}
Add(Hub,15091165,777,315)
{
OutCount=5
link(onEvent1,3461782:In,[])
link(onEvent2,4263851:In,[])
link(onEvent3,16654576:In,[])
link(onEvent4,1171283:In,[])
link(onEvent5,1140281:In,[])
}
Add(LineBreak,14990331,1141,259)
{
link(Out,7975942:doClear,[])
Primary=[3461782,-336,56]
}
Add(LineBreak,12278174,1141,301)
{
link(Out,16651437:doClear,[])
Primary=[4263851,-336,21]
}
Add(LineBreak,6881645,1141,343)
{
link(Out,688805:doClear,[])
Primary=[16654576,-336,-14]
}
Add(LineBreak,8547862,1141,385)
{
link(Out,12463613:doClear,[])
Primary=[1171283,-336,-49]
}
Add(LineBreak,2913931,1141,427)
{
link(Out,1542487:doClear,[])
Primary=[1140281,-336,-84]
}
Add(LineBreak,14505057,749,357)
{
Type=1
link(Data,178217:Var3,[(755,341)])
Primary=[1404505,539,-133]
}
Add(LineBreak,1803057,749,434)
{
Type=1
link(Data,1492010:Index,[])
Primary=[13249949,266,-70]
}
Add(MultiElement,15241465,931,392)
{
link(Data1,5605579:ImageWidth,[(937,380)(909,380)(909,436)(881,436)])
link(Data2,5605579:ImageHeight,[(944,380)(916,380)(916,436)(888,436)])
link(Data3,15138185:Var,[])
link(Data4,995563:Var,[])
link(Data5,9676742:Var,[])
link(onEvent1,12724308:doEvent,[])
}
BEGIN_SDK
Add(EditMulti,5714951,21,21)
{
EventCount=1
WorkCount=1
DataCount=5
Width=594
Height=417
HOffset=70
link(doWork1,8718530:doEvent1,[(42,27)(42,167)])
}
Add(Resize,5293244,343,245)
{
link(onResult,13575441:In,[])
link(Bitmap,11547892:Var2,[])
link(Width,6377771:Var,[])
link(Height,4878663:Result,[(363,233)(331,233)(331,289)(300,289)])
}
Add(Math,8471110,98,161)
{
@Hint=#1:w|
OpType=3
link(onResult,7307494:doOperation,[])
link(Op1,7594017:Var2,[(104,106)(97,106)])
link(Op2,5714951:Data3,[])
}
Add(Math,7307494,140,161)
{
@Hint=#1:h|
OpType=3
link(Op1,7346003:Var2,[(146,99)(104,99)])
link(Op2,5714951:Data4,[(153,91)(118,91)])
}
Add(If_else,11389101,98,245)
{
Type=2
link(onTrue,7821105:doCompare,[])
link(onFalse,9603852:doCompare,[(142,258)(142,342)])
link(Op1,4404592:Var2,[])
link(Op2,966414:Var1,[(111,222)])
}
Add(Hub,8718530,63,161)
{
link(onEvent1,8471110:doOperation,[])
link(onEvent2,11389101:doCompare,[(87,174)(87,251)])
}
Add(If_else,7821105,168,245)
{
Type=2
Op2=Integer(1)
link(onTrue,2821347:doOperation,[])
link(onFalse,7192190:doWork1,[(214,258)])
link(Op1,4282265:Var2,[])
}
Add(GetDataEx,4404592,98,203)
{
link(Data,8471110:Result,[])
}
Add(If_else,9603852,154,336)
{
Type=2
Op2=Integer(1)
link(onTrue,15901414:doOperation,[])
link(onFalse,7192190:doWork2,[])
link(Op1,9185702:Var2,[])
}
Add(GetDataEx,966414,140,217)
{
link(Data,7307494:Result,[])
}
Add(Math,2821347,252,245)
{
OpType=3
ResultType=0
link(onResult,4878663:doOperation,[])
link(Op1,16652640:Var2,[])
link(Op2,9281984:Var2,[])
}
Add(GetDataEx,7594017,91,42)
{
link(Data,5714951:Data1,[])
}
Add(GetDataEx,4282265,168,203)
{
Angle=3
link(Data,4404592:Var3,[])
}
Add(Math,4878663,294,245)
{
OpType=3
ResultType=0
link(onResult,5293244:doResize,[])
link(Op1,14594827:Var2,[])
link(Op2,9281984:Var3,[(307,208)])
}
Add(GetDataEx,7346003,98,49)
{
link(Data,5714951:Data2,[])
}
Add(GetDataEx,9281984,259,203)
{
Angle=3
link(Data,4282265:Var3,[])
}
Add(Math,15901414,385,336)
{
OpType=3
ResultType=0
link(onResult,14170550:doOperation,[])
link(Op1,16652640:Var3,[(391,47)])
link(Op2,15781829:Var2,[])
}
Add(Math,14170550,427,336)
{
OpType=3
ResultType=0
link(onResult,2047111:doResize,[])
link(Op1,14594827:Var3,[(433,54)])
link(Op2,15781829:Var3,[(440,320)])
}
Add(LineBreak,12063080,252,287)
{
Type=1
link(Data,2821347:Result,[])
Primary=[6377771,98,-77]
}
Add(GetDataEx,16652640,252,42)
{
Angle=3
link(Data,7594017:Var3,[])
}
Add(GetDataEx,14594827,294,49)
{
Angle=3
link(Data,7346003:Var3,[])
}
Add(Resize,2047111,476,336)
{
link(onResult,10159246:doWork3,[(599,342)])
link(Bitmap,11547892:Var3,[(482,33)])
link(Width,14303172:Var,[])
link(Height,14170550:Result,[(496,324)(464,324)(464,380)(433,380)])
}
Add(GetDataEx,9185702,154,315)
{
link(Data,966414:Var3,[(160,222)])
}
Add(GetDataEx,15781829,392,315)
{
Angle=3
link(Data,9185702:Var3,[])
}
Add(GetDataEx,11547892,343,28)
{
Angle=3
link(Data,12442992:Var3,[])
}
Add(LineBreak,10705477,385,378)
{
Type=1
link(Data,15901414:Result,[])
Primary=[14303172,98,-77]
}
Add(LineBreak,3967581,553,21)
{
link(Out,4391293:doWork2,[])
Primary=[13575441,-168,224]
}
Add(HubEx,4391293,595,21)
{
link(onEvent,5714951:onEvent1,[])
}
Add(DoData,3757138,231,343)
{
link(onEventData,15668759:In,[])
link(Data,12442992:Var2,[])
}
Add(HubEx,7192190,210,343)
{
link(onEvent,3757138:doData,[])
}
Add(GetDataEx,12442992,231,28)
{
Angle=3
link(Data,5714951:Data5,[(125,33)])
}
Add(HubEx,10159246,595,35)
{
Angle=3
link(onEvent,4391293:doWork3,[])
}
Add(LineBreak,7390090,553,35)
{
link(Out,10159246:doWork2,[])
Primary=[15668759,-280,308]
}
END_SDK
Add(LineBreak,10385275,1190,490)
{
Caption="w"
Type=1
link(Data,1542487:Width,[])
Primary=[15138185,-245,-154]
}
Add(LineBreak,6575772,1197,469)
{
Caption="h"
Type=1
link(Data,1542487:Height,[])
Primary=[995563,-245,-119]
}
Add(LineBreak,16022224,868,448)
{
Caption="img"
Type=1
link(Data,5605579:Bitmap,[])
Primary=[9676742,91,-84]
}
Add(Hub,10806171,791,392)
{
link(onEvent1,5605579:doLoad,[])
link(onEvent2,99347:doProcessMessages,[])
}
Add(Application,99347,819,399)
{
Wait=1
}
карма: 9
0