Вверх ↑
Ответов: 2270
Рейтинг: 677
#1: 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"
}
  Значение скроллов не расчитывал, дело пустяковое тут самое главное в другом. Возможность масштабировать изображение не нагружая систему ненужным увеличением картинки.
  Загрузите картинку, да побольше и начните мышкой за скролл быстро-быстро увеличивать и уменьшать. Да диспетчер задач включите, чтоб загрузку процессора видна была. Лично у меня на ваших схемах такое проделать не получается вылетает программа с ошибкой.
карма: 11

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