Вверх ↑
Этот топик читают: Гость
Ответов: 118
Рейтинг: 0
#1: 2017-03-15 18:12:55 ЛС | профиль | цитата
Собственно вопрос как сделать скролинг по горизонтали и вертикале, при увеличении изображения как это реализовано в стандартной программе "Просмотр фотографий Windows"
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#2: 2017-03-15 18:57:29 ЛС | профиль | цитата
Spectr20 писал(а):
в стандартной программе "Просмотр фотографий Windows"
А у меня такой нет.
Видно граната не той системы.

Редактировалось 1 раз(а), последний 2017-03-15 18:58:10
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8892
Рейтинг: 823
#3: 2017-03-15 19:22:03 ЛС | профиль | цитата
Tad, а у меня нашлась
Схемка


Add(MainForm,2953706,77,154)
{
Width=405
}
Add(Image,7941498,315,189)
{
Left=50
Width=339
Height=262
Align=5
ViewStyle=0
}
Add(Bitmap,5213144,266,63)
{
Point(Width)
Point(Height)
}
Add(PictureStream,5429359,217,63)
{
link(onLoad,5213144:doLoad,[])
}
Add(ChildPanel,3707366,77,63)
{
link(onEvent1,11820223:doExecute,[])
link(onEvent2,1585584:doWork2,[(116,76)(116,132)])
}
BEGIN_SDK
Add(EditMulti,4109492,21,21)
{
EventCount=2
VarCount=1
link(Var1,11335516:Result,[(27,173)(181,173)])
}
Add(Panel,14820532,35,105)
{
Width=50
Height=260
Align=1
}
Add(Button,13743590,119,63)
{
Left=5
Top=5
Width=40
Caption="Open"
link(onClick,4109492:onEvent1,[(158,69)(158,27)])
}
Add(ScrollBar,8815610,119,133)
{
Left=15
Top=65
Width=15
Height=170
Max=1000
Min=-1000
Page=100
Kind=1
link(onPosition,11335516:doCalc,[])
}
Add(MathParse,11335516,175,133)
{
DataCount=1
MathStr="10^(-%1/1000)"
Default=1
link(onResult,4109492:onEvent2,[(214,139)(214,34)])
}
Add(Label,5255694,63,56)
{
Left=17
Top=40
Width=14
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="+"
}
Add(Label,7447257,70,63)
{
Left=17
Top=235
Width=10
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="-"
}
END_SDK
Add(ODialog,11820223,126,63)
{
link(onExecute,7488654:doEvent1,[])
}
Add(Hub,7488654,175,63)
{
link(onEvent1,5429359:doLoad,[])
link(onEvent2,1585584:doWork1,[(200,76)])
}
Add(Resize,15711622,266,189)
{
link(onResult,7941498:doLoad,[])
link(Bitmap,5213144:Bitmap,[])
link(Width,15510922:Result,[(279,166)(237,166)])
link(Height,2821588:Result,[])
}
Add(Math,15510922,231,126)
{
OpType=2
ResultType=0
link(onResult,2821588:doOperation,[])
link(Op1,5213144:Width,[(237,103)(279,103)])
link(Op2,6434891:Var2,[])
}
Add(Math,2821588,280,126)
{
OpType=2
ResultType=0
link(onResult,15711622:doResize,[(318,132)(318,175)(256,175)(256,195)])
link(Op1,5213144:Height,[])
link(Op2,6434891:Var3,[(293,110)])
}
Add(GetDataEx,6434891,238,105)
{
Angle=3
link(Data,3707366:Var1,[(83,110)])
}
Add(HubEx,1585584,196,126)
{
link(onEvent,15510922:doOperation,[])
}

карма: 19

0
Ответов: 118
Рейтинг: 0
#4: 2017-03-15 19:29:02 ЛС | профиль | цитата
а как его перемещать влево вправо в компоненте image
карма: 0

0
Ответов: 1926
Рейтинг: 172
#5: 2017-03-15 20:23:55 ЛС | профиль | цитата
Вот, можно мышкой таскать, можно колесом перемещать (при нажатом ctrl - по горизонтали)

Add(MainForm,4817610,112,343)
{
Width=405
Point(onMouseWheel)
link(onMouseWheel,1358662:doValue,[])
}
Add(Image,7941498,574,238)
{
Left=50
Width=339
Height=262
Align=5
AutoSize=0
ViewStyle=4
Point(Handle)
link(onClick,2855595:doMove,[(618,244)(618,272)(569,272)(569,307)])
}
Add(Bitmap,5213144,420,112)
{
Point(Width)
Point(Height)
}
Add(PictureStream,5429359,371,112)
{
link(onLoad,5213144:doLoad,[])
}
Add(ChildPanel,3707366,231,112)
{
link(onEvent1,11820223:doExecute,[])
link(onEvent2,1585584:doWork2,[(270,125)(270,181)])
}
BEGIN_SDK
Add(EditMulti,4109492,21,21)
{
EventCount=2
VarCount=1
link(Var1,11335516:Result,[(27,173)(181,173)])
}
Add(Panel,14820532,35,105)
{
Width=50
Height=260
Align=1
}
Add(Button,13743590,119,63)
{
Left=5
Top=5
Width=40
Caption="Open"
link(onClick,4109492:onEvent1,[(158,69)(158,27)])
}
Add(ScrollBar,8815610,119,133)
{
Left=15
Top=65
Width=15
Height=170
Max=1000
Min=-1000
Page=100
Kind=1
link(onPosition,11335516:doCalc,[])
}
Add(MathParse,11335516,175,133)
{
DataCount=1
MathStr="10^(-%1/1000)"
Default=1
link(onResult,4109492:onEvent2,[(214,139)(214,34)])
}
Add(Label,5255694,63,56)
{
Left=17
Top=40
Width=14
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="+"
}
Add(Label,7447257,70,63)
{
Left=17
Top=235
Width=10
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="-"
}
END_SDK
Add(ODialog,11820223,280,112)
{
link(onExecute,7488654:doEvent1,[])
}
Add(Hub,7488654,329,112)
{
link(onEvent1,5429359:doLoad,[])
link(onEvent2,1585584:doWork1,[(354,125)])
}
Add(Resize,15711622,420,238)
{
link(onResult,7941498:doLoad,[])
link(Bitmap,5213144:Bitmap,[])
link(Width,15510922:Result,[(433,215)(391,215)])
link(Height,2821588:Result,[])
}
Add(Math,15510922,385,175)
{
OpType=2
ResultType=0
link(onResult,2821588:doOperation,[])
link(Op1,5213144:Width,[(391,152)(433,152)])
link(Op2,6434891:Var2,[])
}
Add(Math,2821588,434,175)
{
OpType=2
ResultType=0
link(onResult,15711622:doResize,[(472,181)(472,224)(410,224)(410,244)])
link(Op1,5213144:Height,[])
link(Op2,6434891:Var3,[(447,159)])
}
Add(GetDataEx,6434891,392,154)
{
Angle=3
link(Data,3707366:Var1,[(237,159)])
}
Add(HubEx,1585584,350,175)
{
link(onEvent,15510922:doOperation,[])
}
Add(MoveWindow,2855595,581,301)
{
link(Handle,7662938:Var2,[])
}
Add(PosWindow,9184089,427,357)
{
link(Handle,7662938:Var1,[(433,285)])
}
Add(GetDataEx,7662938,581,280)
{
link(Data,7941498:Handle,[])
}
Add(Math,1727059,371,364)
{
ResultType=0
link(onResult,9184089:doTop,[])
link(Op1,16114928:Var2,[])
link(Op2,14332407:Var,[])
}
Add(LineBreak,9669118,434,399)
{
Type=1
link(Data,9184089:CurrentTop,[])
Primary=[14332407,-56,-63]
}
Add(Memory,1358662,161,364)
{
link(onData,11149153:doReadKey,[])
}
Add(Keyboard,11149153,210,364)
{
Key=17
link(onReadKey,1247340:doEvent,[])
}
Add(IndexToChanel,1247340,252,364)
{
link(onEvent1,1727059:doOperation,[])
link(onEvent2,664776:doOperation,[(328,377)(328,433)])
}
Add(LineBreak,15654931,161,406)
{
Type=1
link(Data,1358662:Value,[])
Primary=[13200439,210,-105]
}
Add(Math,664776,357,427)
{
link(onResult,9184089:doLeft,[(412,433)(412,363)])
link(Op1,16114928:Var1,[(363,327)])
link(Op2,9184089:CurrentLeft,[(370,408)(433,408)])
}
Add(GetDataEx,16114928,371,322)
{
link(Data,13200439:Var,[])
}
карма: 9
0
Ответов: 118
Рейтинг: 0
#6: 2017-03-15 21:00:54 ЛС | профиль | цитата
А как исправить обрезку картинки по границам увлечения
карма: 0

0
Ответов: 8892
Рейтинг: 823
#7: 2017-03-15 21:22:34 ЛС | профиль | цитата
Spectr20,
Ещё схемка (последняя)


Add(MainForm,11776179,252,119)
{
Width=407
Point(onResize)
link(onResize,11186040:doWork2,[])
}
Add(Bitmap,5213144,483,77)
{
Point(Width)
Point(Height)
}
Add(PictureStream,5429359,434,77)
{
link(onLoad,5213144:doLoad,[])
}
Add(ChildPanel,3707366,294,77)
{
link(onEvent1,11820223:doExecute,[])
link(onEvent2,11186040:doWork1,[(338,90)])
}
BEGIN_SDK
Add(EditMulti,4109492,21,21)
{
EventCount=2
WorkCount=1
VarCount=2
link(Var1,11335516:Result,[(27,173)(181,173)])
link(Var2,16001185:Position,[(34,180)(255,180)])
link(doWork1,16001185:doMax,[(109,27)(109,127)])
}
Add(Panel,14820532,35,105)
{
Width=67
Height=262
Align=1
}
Add(Button,13743590,119,63)
{
Left=5
Top=5
Width=40
Caption="Open"
link(onClick,4109492:onEvent1,[(158,69)(158,27)])
}
Add(ScrollBar,8815610,119,133)
{
Left=10
Top=65
Width=15
Height=170
Max=1000
Min=-1000
Page=100
Kind=1
link(onPosition,11335516:doCalc,[])
}
Add(MathParse,11335516,175,133)
{
DataCount=1
MathStr="10^(-%1/1000)"
Default=1
link(onResult,7493568:doWork2,[(214,139)(214,34)])
}
Add(Label,5255694,63,56)
{
Left=12
Top=40
Width=14
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="+"
}
Add(Label,7447257,70,63)
{
Left=12
Top=235
Width=10
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="-"
}
Add(ScrollBar,16001185,249,114)
{
Left=50
Top=2
Width=15
Height=258
Align=3
Max=1000
Kind=1
Point(doMax)
link(onPosition,7493568:doWork3,[(305,120)])
}
Add(HubEx,7493568,301,28)
{
link(onEvent,4109492:onEvent2,[])
}
END_SDK
Add(ODialog,11820223,343,77)
{
link(onExecute,7488654:doEvent1,[])
}
Add(Hub,7488654,392,77)
{
OutCount=3
link(onEvent1,5429359:doLoad,[])
link(onEvent3,1585584:doWork1,[(417,97)])
}
Add(Resize,15711622,483,224)
{
link(onResult,16589530:doCopy,[])
link(Bitmap,5213144:Bitmap,[])
link(Width,6963410:Var2,[])
link(Height,1464661:Var2,[])
}
Add(Math,15510922,448,140)
{
OpType=2
ResultType=0
link(onResult,2821588:doOperation,[])
link(Op1,5213144:Width,[(454,117)(496,117)])
link(Op2,6434891:Var2,[])
}
Add(Math,2821588,497,140)
{
OpType=2
ResultType=0
link(onResult,15711622:doResize,[(536,146)(536,202)(474,202)(474,230)])
link(Op1,5213144:Height,[])
link(Op2,6434891:Var3,[(510,124)])
}
Add(GetDataEx,6434891,455,119)
{
Angle=3
link(Data,3707366:Var1,[(300,124)])
}
Add(HubEx,1585584,413,140)
{
link(onEvent,15510922:doOperation,[])
}
Add(Img_Copy,16589530,539,224)
{
Point(Width)
Point(Height)
link(onCopy,7661797:doWork1,[])
link(X,7661797:Var1,[(552,201)(601,201)(601,264)(629,264)])
link(Y,3707366:Var2,[(559,207)(307,207)])
link(Width,7661797:Var2,[(566,208)(594,208)(594,271)(636,271)])
link(Height,7661797:Var3,[(573,215)(587,215)(587,278)(643,278)])
}
Add(ChildPanel,7661797,623,224)
{
link(onEvent1,1585584:doWork3,[(662,230)(662,181)(417,181)])
link(Data1,6963410:Var3,[(629,197)])
link(Data2,1464661:Var3,[(636,187)])
link(onEvent2,3707366:doWork1,[(669,237)(669,69)(284,69)(284,83)])
}
BEGIN_SDK
Add(EditMulti,3487892,7,14)
{
EventCount=2
WorkCount=2
DataCount=2
VarCount=3
Height=214
HOffset=98
link(doWork1,1134644:doEvent1,[(25,20)(25,41)])
link(Var1,11914434:Position,[(111,206)(174,206)])
link(Var2,5998371:Var2,[(118,216)(90,216)])
link(Var3,1755603:Var2,[(125,211)(97,211)])
}
Add(Panel,11996950,21,84)
{
Left=65
Width=326
Height=261
Align=5
}
Add(Image,9996356,77,35)
{
Left=2
Top=17
Width=307
Height=232
Align=5
ViewStyle=0
Point(Width)
Point(Height)
}
Add(ScrollBar,11914434,168,140)
{
Left=2
Top=2
Width=307
Align=2
Max=1000
Point(doMax)
link(onPosition,3487892:onEvent1,[(256,146)(256,20)])
}
Add(Hub,1134644,35,35)
{
OutCount=3
link(onEvent1,9996356:doLoad,[])
link(onEvent2,9632670:doOperation,[(67,48)(67,153)])
link(onEvent3,517421:doOperation,[(60,55)(60,104)])
}
Add(Math,9632670,119,147)
{
OpType=1
ResultType=0
link(onResult,11914434:doMax,[])
link(Op1,3487892:Data1,[(125,26)(111,26)])
link(Op2,5998371:Var3,[(132,138)])
}
Add(GetDataEx,5998371,84,133)
{
link(Data,9996356:Width,[])
}
Add(Math,517421,133,98)
{
OpType=1
ResultType=0
link(onResult,3487892:onEvent2,[(263,104)(263,27)])
link(Op1,3487892:Data2,[(139,19)(118,19)])
link(Op2,1755603:Var3,[(146,82)])
}
Add(GetDataEx,1755603,91,77)
{
link(Data,9996356:Height,[])
}
END_SDK
Add(HubEx,11186040,334,140)
{
link(onEvent,1585584:doWork2,[])
}
Add(GetDataEx,6963410,490,192)
{
Angle=3
link(Data,15510922:Result,[(454,197)])
}
Add(GetDataEx,1464661,497,182)
{
link(Data,2821588:Result,[])
}

карма: 19

0
Ответов: 1535
Рейтинг: 176
#8: 2017-03-15 22:32:44 ЛС | профиль | цитата
Зуммируем и центрируем картинку по курсору, используя скролл мыши.


Add(MainForm,2953706,168,98)
{
Point(Left)
Point(Top)
link(onCreate,10284956:doEvent1,[])
}
Add(Image,2974248,385,112)
{
Width=512
Height=539
Color=12639424
ViewStyle=1
Point(onMouseWheel)
Point(doWidth)
Point(doHeight)
Point(doLeft)
Point(doTop)
Point(ImageWidth)
Point(ImageHeight)
Point(Left)
Point(Top)
Point(Width)
Point(Height)
Point(MouseX)
Point(MouseY)
Point(Handle)
link(onClick,38186:doMove,[])
link(onMouseWheel,6649246:doWork2,[(473,125)(473,277)(380,277)(380,244)])
}
Add(MultiElement,6649246,392,231)
{
@Hint=#66:Зуммируем и центрируем картинку по курсору мыши, используя скролл.|
link(onEvent1,1948744:Cable,[(436,237)(436,197)(341,197)(341,132)])
link(Data1,12049083:Cable,[])
link(Data2,2953706:Left,[(405,219)(174,219)])
link(Data3,2953706:Top,[(412,209)(181,209)])
AddHint(-234,16,198,26,@Hint)
}
BEGIN_SDK
Add(EditMulti,11369874,21,21)
{
EventCount=1
WorkCount=2
DataCount=3
Width=748
Height=368
link(doWork1,15398367:doCalc,[(78,27)(78,188)])
link(doWork2,6990747:doCalc,[(59,34)(59,244)])
}
Add(Math,14529659,378,245)
{
OpType=2
ResultType=0
link(onResult,12912451:Wire1,[])
link(Op2,7305812:Var3,[(391,161)])
}
Add(Math,9840342,427,252)
{
OpType=2
ResultType=0
link(onResult,12912451:Wire2,[])
link(Op2,16428207:Var3,[(440,147)])
}
Add(Hub,6728913,343,245)
{
OutCount=4
link(onEvent1,14529659:doOperation,[])
link(onEvent2,9840342:doOperation,[])
link(onEvent3,5554615:doCalc,[])
link(onEvent4,15441322:doCalc,[])
}
Add(MathParse,7048634,518,259)
{
DataCount=3
MathStr="%2-(%2-%3)*%1"
ResultType=0
link(onResult,12912451:Wire3,[])
link(X1,7133587:Var2,[])
link(X3,2905274:Wire3,[(538,137)(111,137)])
}
Add(MathParse,15552860,616,266)
{
DataCount=3
MathStr="%2-(%2-%3)*%1"
ResultType=0
link(onResult,12912451:Wire4,[])
link(X1,7133587:Var3,[(622,236)])
link(X3,2905274:Wire4,[(636,126)(118,126)])
}
Add(MathParse,6990747,105,238)
{
@Hint=#47:Используем скролл для изменения масштаба +-0.01|
MathStr="((%1>0)*(%2+0.19))+\r\n(((%1<0)and(%2>0.0))*(%2-0.19))\r\n"
Default=1
link(onResult,7594904:doWork2,[])
link(X2,15211541:Var1,[(118,230)(161,230)(161,299)])
AddHint(-70,74,200,26,@Hint)
}
Add(Hub,9721823,245,238)
{
link(onEvent1,5699551:doWork2,[])
link(onEvent2,6728913:doEvent1,[])
}
Add(MemFifo,16389379,287,259)
{
Count=1
link(onData,14395678:doOperation,[(326,265)(326,306)(268,306)(268,321)])
}
Add(MathParse,15398367,105,182)
{
DataCount=4
MathStr="min(%3/%1,%4/%2)"
link(onResult,3227651:doEvent1,[])
link(X1,7305812:Var2,[])
link(X2,16428207:Var2,[])
link(X3,2905274:Wire5,[])
link(X4,2905274:Wire6,[])
}
Add(Math,14395678,287,315)
{
OpType=3
link(Op1,15211541:Var2,[])
}
Add(GetDataEx,15211541,287,294)
{
link(Data,16389379:Value1,[])
}
Add(Hub,3227651,154,182)
{
OutCount=3
link(onEvent1,5699551:doWork1,[(277,188)])
link(onEvent2,11915571:doOperation,[])
link(onEvent3,7594904:doWork1,[(186,202)])
}
Add(If_else,5973104,196,238)
{
Type=4
Op2=Real(0.01)
link(onTrue,9721823:doEvent1,[])
link(Op2,11915571:Result,[])
}
Add(GetDataEx,7133587,518,231)
{
Angle=3
link(Data,14395678:Result,[(466,236)(466,358)(293,358)])
}
Add(GetDataEx,7305812,105,156)
{
Angle=3
link(Data,2905274:Wire1,[(97,161)])
}
Add(HubEx,5699551,273,238)
{
Angle=1
link(onEvent,16389379:doValue,[(277,265)])
}
Add(CableWork,12912451,665,245)
{
Count=4
link(Cable,11369874:onEvent1,[(742,251)(742,27)])
}
Add(CableVar,2905274,91,77)
{
Count=8
link(Cable,11369874:Data1,[(97,57)(27,57)])
}
Add(InfoTip,12370879,112,56)
{
Info=#19:iW iH L T W H mX mY|
Width=127
Height=18
Margin=2
}
Add(GetDataEx,16428207,112,142)
{
Angle=3
link(Data,2905274:Wire2,[(104,147)])
}
Add(MathParse,5554615,476,259)
{
MathStr="%1-%2-8"
ResultType=0
PColor(X1,11184640)
PColor(X2,16711935)
link(onResult,7048634:doCalc,[])
link(X1,2905274:Wire7,[(482,116)(139,116)])
link(X2,11369874:Data2,[(489,48)(34,48)])
}
Add(MathParse,15441322,567,266)
{
MathStr="%1-%2-30"
ResultType=0
PColor(X1,11184640)
PColor(X2,16711935)
link(onResult,15552860:doCalc,[])
link(X1,2905274:Wire8,[(573,106)(146,106)])
link(X2,11369874:Data3,[(580,41)(41,41)])
}
Add(Math,11915571,203,189)
{
OpType=3
Op2=2
}
Add(HubEx,7594904,182,238)
{
link(onEvent,5973104:doCompare,[])
}
END_SDK
Add(CableEvent,1948744,357,126)
{
Count=4
link(Wire1,2974248:doWidth,[])
link(Wire2,2974248:doHeight,[])
link(Wire3,2974248:doLeft,[])
link(Wire4,2974248:doTop,[])
}
Add(CableData,12049083,392,168)
{
Count=8
link(Wire1,2974248:ImageWidth,[])
link(Wire2,2974248:ImageHeight,[])
link(Wire3,2974248:Left,[])
link(Wire4,2974248:Top,[])
link(Wire5,2974248:Width,[])
link(Wire6,2974248:Height,[])
link(Wire7,2974248:MouseX,[])
link(Wire8,2974248:MouseY,[])
}
Add(MoveWindow,38186,497,112)
{
link(Handle,2974248:Handle,[(503,100)(479,100)(479,176)(454,176)])
}
Add(Hub,10284956,217,112)
{
link(onEvent1,15389128:doExecute,[])
link(onEvent2,6649246:doWork1,[(244,125)(244,237)])
}
Add(Img_Loader,1932830,294,112)
{
link(onLoad,2974248:doLoad,[])
}
Add(ODialog,15389128,252,112)
{
link(onExecute,1932830:doLoad,[])
}
карма: 1
Не так страшна ошибка, как опасность её не заметить.

1
Голосовали:Galkov
Ответов: 2205
Рейтинг: 675
#9: 2017-03-15 23:21:53 ЛС | профиль | цитата
Леонид, 3042, вот загружу я в вашу программу изображение размером так 1024х768 (и это в наши дни далеко не предел) и начну скроллом увеличивать, да как вылетит ваша программа. Про нагрузку процессора вообще умолчу.
Вот сравните работу ваших схем и этой:
Схемка:

Add(PaintBox,4771018,476,126)
{
Left=50
Width=347
Height=263
Layout="ver_02"
HeightScale=100
Point(onResize)
link(onResize,5036814:doWork,[])
}
Add(MainForm,12048663,112,133)
{
Width=753
Height=613
Position=1
}
Add(ChildPanel,3707366,175,133)
{
link(onEvent1,11820223:doExecute,[(215,139)(215,83)])
link(onEvent2,8895216:doWork,[])
}
BEGIN_SDK
Add(EditMulti,4109492,21,21)
{
EventCount=2
VarCount=1
link(Var1,11335516:Result,[(27,173)(181,173)])
}
Add(Panel,14820532,35,105)
{
Width=50
Height=295
Layout="parent.gor_01"
}
Add(Button,13743590,119,63)
{
Left=5
Top=5
Width=40
Caption="Open"
link(onClick,4109492:onEvent1,[(158,69)(158,27)])
}
Add(ScrollBar,8815610,119,133)
{
Left=15
Top=65
Width=15
Height=170
Max=1000
Min=-1000
Page=100
Kind=1
link(onPosition,11335516:doCalc,[])
}
Add(MathParse,11335516,175,133)
{
DataCount=1
MathStr="10^(-%1/1000)"
Default=1
link(onResult,4109492:onEvent2,[(214,139)(214,34)])
}
Add(Label,5255694,63,56)
{
Left=17
Top=40
Width=14
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="+"
}
Add(Label,7447257,70,63)
{
Left=17
Top=235
Width=10
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="-"
}
END_SDK
Add(Img_Loader,11153606,273,77)
{
Point(ImageWidth)
Point(ImageHeight)
link(onLoad,16279260:doWork,[])
}
Add(ODialog,11820223,224,77)
{
link(onExecute,11153606:doLoad,[])
}
Add(Img_Bmp,1232586,476,413)
{
Point(Transform)
link(Bitmap,4771018:Bitmap,[])
link(SourceBitmap,11153606:Bitmap,[(489,395)(279,395)])
link(Transform,13565508:Transform,[])
}
Add(Hub,8930385,413,133)
{
OutCount=3
link(onEvent1,4771018:doClear,[])
link(onEvent2,1232586:doDraw,[(451,146)(451,419)])
link(onEvent3,4771018:doRefresh,[(464,153)(464,132)])
}
Add(Img_UseScale,10141595,490,273)
{
Mode=1
link(X,16364785:Var2,[])
link(Y,16364785:Var3,[(510,264)])
}
Add(GetDataEx,16364785,497,259)
{
link(Data,3707366:Var1,[(503,186)(181,186)])
}
Add(Img_UseOffset,13565508,490,343)
{
link(AddTransform,10141595:Transform,[])
link(X,3202856:Result,[(503,319)(622,319)])
link(Y,15031258:Result,[(510,332)(629,332)])
}
Add(ScrollBar,2534278,574,161)
{
Left=50
Top=280
Width=345
Layout="ver_02"
link(onPosition,3202856:doOperation,[])
}
Add(ScrollBar,13416213,581,196)
{
Left=400
Width=15
Height=275
Layout="ver_01"
HeightScale=100
Kind=1
link(onPosition,15031258:doOperation,[])
}
Add(LineBreakEx,2117428,665,196)
{
Caption="draw"
}
Add(LineBreakEx,7368562,658,161)
{
Caption="draw"
}
Add(LineBreakEx,16279260,315,77)
{
Caption="draw"
}
Add(LineBreakEx,8895216,217,140)
{
Caption="draw"
}
Add(LineBreakEx,7858792,357,133)
{
Caption="draw"
Type=1
link(OnEvent,8930385:doEvent1,[])
}
Add(Math,3202856,616,161)
{
OpType=2
Op2=-1
link(onResult,7368562:doWork,[])
}
Add(Math,15031258,623,196)
{
OpType=2
Op2=-1
link(onResult,2117428:doWork,[])
}
Add(VBoxLayout,4249892,686,378)
{
Name="ver_01"
Layout="gor_01"
}
Add(HBoxLayout,7581058,595,420)
{
Name="gor_01"
}
Add(LineBreakEx,5036814,518,133)
{
Caption="draw"
}
Add(LayoutSpacer,6993227,686,420)
{
Left=400
Top=280
Width=15
Height=15
Layout="ver_01"
}
Add(VBoxLayout,10213651,644,378)
{
Name="ver_02"
WidthScale=100
Layout="gor_01"
}
  Значение скроллов не расчитывал, дело пустяковое тут самое главное в другом. Возможность масштабировать изображение не нагружая систему ненужным увеличением картинки.
  Загрузите картинку, да побольше и начните мышкой за скролл быстро-быстро увеличивать и уменьшать. Да диспетчер задач включите, чтоб загрузку процессора видна была. Лично у меня на ваших схемах такое проделать не получается вылетает программа с ошибкой.

Редактировалось 2 раз(а), последний 2017-03-15 23:22:55
карма: 11

0
Ответов: 165
Рейтинг: 6
#10: 2017-03-15 23:25:58 ЛС | профиль | цитата
Мой вариант:
Зум колесом мыши, можно таскать картинку ЛКМ
Add(MainForm,2953706,462,84)
{
Width=600
Height=400
Color=16777215
Caption=""
Position=1
Point(onMouseWheel)
Point(onKeyDown)
link(onCreate,11820223:doExecute,[])
link(onMouseWheel,1295109:doCompare,[(513,111)(513,188)])
link(onKeyDown,5584549:doCase,[(506,118)(506,156)(457,156)(457,195)])
}
Add(ODialog,11820223,546,98)
{
StartDir=""
FileName=""
link(onExecute,4062643:doEvent1,[])
}
Add(Image,11644418,875,84)
{
Color=16777215
MouseCapture=0
Point(doWidth)
Point(doHeight)
Point(Handle)
Point(onMouseWheel)
link(onClick,13897948:doMove,[(919,90)(919,126)(870,126)(870,146)])
}
Add(Img_GDIFileProcessor,9216498,644,84)
{
Point(doGetParamFrom)
Point(onGetParam)
link(onLoad,11644418:doLoad,[])
link(onGetParam,13789852:doSeparateMT,[])
}
Add(Hub,4062643,595,98)
{
link(onEvent1,9216498:doGetParamFrom,[])
link(onEvent2,9216498:doLoadFrom,[(627,111)(627,90)])
}
Add(MoveWindow,13897948,882,140)
{
link(Handle,11644418:Handle,[])
}
Add(MT_MultiData,13789852,693,91)
{
link(onData1,10214689:doValue,[])
link(onData2,7119505:doValue,[(765,104)(765,111)])
}
Add(Memory,10214689,763,91)
{
link(onData,15053578:doWork2,[(835,97)(835,104)])
}
Add(Memory,7119505,805,105)
{
link(onData,13436875:doWork2,[])
}
Add(FastMathParse,4841835,763,245)
{
MathStr="%1 * (1 + %2 * 0.5 * 0.1)"
@IsLib=True
link(onResult,15053578:doWork3,[(858,251)])
link(X1,10214689:Value,[])
link(X2,10515148:Var1,[(776,224)])
}
Add(FastMathParse,10477695,805,266)
{
elink(4841835)
link(onResult,13436875:doWork3,[(858,272)])
link(X1,7119505:Value,[])
link(X2,10515148:Var3,[(818,224)])
}
Add(LineBreakEx,11878571,791,189)
{
Caption="zoom"
Type=2
}
Add(GetDataEx,10515148,791,219)
{
link(Data,11878571:getVar,[])
}
Add(CounterEx,6597880,588,182)
{
Min=-100
Point(doPrev)
Point(onThroughMax)
Point(onThroughMin)
Point(doReset)
Point(onSet)
link(onNext,9998490:doEvent1,[(692,188)(692,251)])
link(onSet,9998490:doEvent2,[(667,209)(667,258)])
}
Add(Case,5584549,469,189)
{
Value=Integer(27)
link(onTrue,6597880:doReset,[])
}
Add(If_else,1295109,532,182)
{
Op2=Integer(120)
link(onTrue,6597880:doNext,[])
link(onFalse,6597880:doPrev,[])
}
Add(Hub,9998490,714,245)
{
InCount=2
link(onEvent1,4841835:doCalc,[])
link(onEvent2,10477695:doCalc,[(766,258)(766,272)])
}
Add(HubEx,15053578,854,98)
{
link(onEvent,11644418:doWidth,[])
}
Add(HubEx,13436875,854,105)
{
link(onEvent,11644418:doHeight,[])
}

--- Добавлено в 2017-03-15 23:51:44

sla8a, при уменьшении картинки в твоей схеме появляются цветовые искажения. Картинка деградирует.

Результат:

Оригинал:


Редактировалось 3 раз(а), последний 2017-03-15 23:52:40
карма: 4

0
Ответов: 1535
Рейтинг: 176
#11: 2017-03-16 08:15:14 ЛС | профиль | цитата
sla8a писал(а):
Да диспетчер задач включите, чтоб загрузку процессора видна была
Ну не знаю, моя схема в диспетчере задач, при беспорядочном зуме (прокрутка колеса мыши), показала не более 25% с картинкой 1280х720.

Редактировалось 2 раз(а), последний 2017-03-16 10:04:03
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 8892
Рейтинг: 823
#12: 2017-03-16 10:25:20 ЛС | профиль | цитата
sla8a, уж лучше процессор грузить, чем такое :
Рентген.jpg
Но схемку сохраню, пригодится в медицинских целях

Редактировалось 1 раз(а), последний 2017-03-16 10:33:15
карма: 19

0
Ответов: 2205
Рейтинг: 675
#13: 2017-03-16 22:12:22 ЛС | профиль | цитата
Что-то пошло не так. Тестировал на большой, но на простой картинке и такого эффекта не заметил. Что интересно делал в таком плане схему все работало, надо будет посмотреть в чем там разница. Но согласитесь загрузка процессора намного меньше.
карма: 11

0
Ответов: 8892
Рейтинг: 823
#14: 2017-03-16 23:50:04 ЛС | профиль | цитата
sla8a, выложенная картинка ~5000х3000 пикселей.
(А не может повлиять неоднократный пересчёт пикселей с накоплением ошибки?)
А нагрузка гораздо меньше! ("А в попугаях я гораздо длиннее!" (с) )
карма: 19

1
Голосовали:flint2
Ответов: 2059
Рейтинг: 132
#15: 2017-03-17 03:10:39 ЛС | профиль | цитата
("А в попугаях я гораздо длиннее!" (с) )

Особенно с 35 по 42 мартабря.
выдержка из шифровки Алекса - Юстасу

в результате моего копипаста... я доверчивый.
обещал отписаться про проблему с визуализацией дерева - внутренний отладчик не помог, но ollydbg при первом же проходе выявил цикл без возможности выхода из него:


ковыряться не стал пока, просто закомментировал в исходнике в процедуре THIdisplay_tree.ChangeSize несколько строк (с практически незаметной потерей функциональности в части отсутствия линий прокрутки) и все заработало без нареканий:

А в 7-64/32 проблем не наблюдал никто.
Но стек то, как действительно оказалось на 10-ке засорялся, а количество взлётов, всё-таки, было = количеству посадок.


Редактировалось 6 раз(а), последний 2017-03-17 04:32:12
карма: 6

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