Add(TrackBar,12629519,644,154)
{
Left=340
Top=395
Width=230
Height=15
Visible=1
Min=1
Position=1
ThumbLength=10
Point(doSetFocus)
link(onPosition,8296383:doEvent1,[])
}
Add(MainForm,15261923,238,273)
{
Left=20
Top=105
Width=1317
Height=595
Ctl3D=0
WinStyle=3
WindowsState=2
MouseCapture=0
Position=1
Point(MouseX)
Point(MouseY)
Point(onResize)
Point(Handle)
Point(onMouseMove)
link(onCreate,16299401:doEvent1,[])
link(onMouseMove,13233314:In,[])
}
Add(GL_Main,12986311,462,287)
{
Color=12639424
TwoSide=0
link(onInit,12198675:doInit,[])
link(onViewPort,3410847:doPerspective,[])
link(Handle,5517251:Handle,[])
}
Add(Timer,9506849,392,336)
{
Interval=10
Enable=1
link(onTimer,1049454:doEvent1,[])
}
Add(GL_GTools,771925,497,336)
{
Point(doClear)
Point(doPushMatrix)
Point(doPopMatrix)
}
Add(Hub,1049454,434,336)
{
OutCount=6
link(onEvent1,771925:doClear,[])
link(onEvent2,771925:doPushMatrix,[])
link(onEvent3,8079493:doRotate,[(465,356)(465,398)])
link(onEvent4,771925:doPopMatrix,[(486,363)(486,356)])
link(onEvent5,12986311:doFlip,[(455,370)(455,307)])
}
Add(Hub,16299401,357,287)
{
OutCount=5
link(onEvent1,12986311:doInit,[])
link(onEvent2,12986311:doViewPort,[])
link(onEvent3,8428433:In,[])
link(onEvent4,12473697:In,[])
link(onEvent5,9506849:doTimer,[(385,321)(385,342)])
}
Add(GL_Perspective,3410847,511,294)
{
Aspect=2
Fovy=30
}
Add(GL_Point3D,7772462,728,238)
{
Y=1
Z=1
}
Add(GL_Options,15876912,637,287)
{
link(onEvent,13370757:doEnabled,[])
}
Add(GL_Rotate,8079493,567,392)
{
Angle=30
Y=200
link(onRotate,858408:doTranslate,[])
link(Angle,3291853:Position,[])
}
Add(TrackBar,3291853,567,343)
{
Left=70
Top=380
Width=15
Height=175
Max=360
Position=30
Kind=1
ThumbLength=10
link(onPosition,3291853:doPosition2,[(610,349)(610,332)(555,332)(555,356)])
}
Add(PaintBox,5517251,455,154)
{
Left=115
Top=5
Width=1325
Height=555
Color=16777215
Ctl3D=0
Layout="horiz1"
Point(Handle)
Point(MouseX)
Point(MouseY)
Point(doSendToBack)
Point(doBringToFront)
Point(onMouseWheel)
Point(onMouseMove)
Point(onMouseDown)
Point(onMouseUp)
link(onMouseMove,12629519:doSetFocus,[])
link(onMouseDown,15176481:doCompare,[(503,181)(503,97)])
link(onMouseUp,659226:doStop,[(561,188)(561,104)])
}
Add(GL_Point3D,10506615,1085,462)
{
link(X,7416995:Part1,[])
link(Y,7416995:Part2,[])
link(Z,7416995:Part3,[])
}
Add(GL_Point3D,5206949,1106,462)
{
link(X,7416995:Part4,[])
link(Y,7416995:Part5,[])
link(Z,7416995:Part6,[])
}
Add(Gl_Translate,858408,616,392)
{
X=-3
Y=-1.2
link(onTranslate,5852894:doDraw,[])
}
Add(Gl_Scale,683218,714,392)
{
X=0.001
Y=0.001
Z=0.001
link(onScale,9392691:doColor,[])
link(X,15114739:Var1,[(720,369)])
link(Y,15114739:Var2,[])
link(Z,15114739:Var3,[(734,369)])
}
Add(StrList,2315546,1015,308)
{
Strings=#19:0/60/580/2000/0/580|18:0/76/600/2000/60/0|22:0/2400/600/2000/2384/0|18:0/2384/600/16/76/0|23:1984/2384/600/2000/76/0|
}
Add(ArrayEnum,12642073,1029,399)
{
link(onItem,7416995:doSplit,[])
link(Array,2315546:Array,[])
}
Add(GL_GluTools,12198675,553,287)
{
Texture=0
link(onInit,5809249:doEnabled,[])
}
Add(GL_Options,5809249,595,287)
{
Flag=2
link(onEvent,15876912:doEnabled,[])
}
Add(GL_Cube2,15959241,1092,546)
{
link(Point1,10506615:Point3D,[(1098,520)(1091,520)])
link(Point2,5206949:Point3D,[(1105,520)(1112,520)])
}
Add(MultiStrPart,7416995,1085,399)
{
Char="/"
Count=6
link(onSplit,15959241:doDraw,[(1195,405)(1195,593)(1060,593)(1060,552)])
}
Add(GL_Color,9392691,777,392)
{
Color=12632256
link(onColor,15952797:doEvent,[])
}
Add(GL_Light,14665421,728,287)
{
Ambient=8421504
Diffuse=12632256
Specular=8388608
link(onEnabled,14665421:doMove,[(780,293)(780,332)(718,332)(718,300)])
link(Point,7772462:Point3D,[])
}
Add(GL_Options,13370757,679,287)
{
Flag=1
link(onEvent,14665421:doEnabled,[])
}
Add(LineBreak,12757493,861,315)
{
Caption="1"
link(Out,16564429:doEvent1,[])
Primary=[8428433,-462,-14]
}
Add(ChildGroupBox,10286362,945,315)
{
link(onEvent1,2411833:doNext,[(991,321)(991,301)(828,301)(828,349)])
}
BEGIN_SDK
Add(EditMulti,16371112,0,0)
{
EventCount=3
WorkCount=1
Width=790
Height=354
}
Add(GroupBox,11651533,35,105)
{
Top=5
Width=113
Height=365
Color=-16777192
Ctl3D=0
Layout="parent.horiz1"
HeightScale=30
Caption=""
}
Add(Button,14369264,700,7)
{
Left=10
Top=290
Width=80
Height=40
link(onClick,16371112:onEvent1,[(761,13)(761,6)])
}
END_SDK
Add(Gl_Axis,5852894,665,392)
{
link(onDraw,683218:doScale,[])
}
Add(Math,11205482,644,203)
{
OpType=3
Op2=1000
link(Op1,12629519:Position,[])
}
Add(Hub,8296383,693,154)
{
link(onEvent1,12629519:doPosition2,[(720,160)(720,136)(632,136)(632,167)])
link(onEvent2,11205482:doOperation,[(720,167)(720,195)(632,195)(632,209)])
}
Add(LineBreak,15562629,644,245)
{
Caption="Масштаб"
Type=1
link(Data,11205482:Result,[])
Primary=[5416912,77,98]
}
Add(GetDataEx,15114739,721,364)
{
link(Data,5416912:Var,[])
}
Add(LineBreak,13053577,595,154)
{
Caption="2"
link(Out,12629519:doPosition,[])
Primary=[12473697,-196,154]
}
Add(Hub,16564429,917,315)
{
InCount=2
OutCount=1
link(onEvent1,10286362:doWork1,[])
}
Add(LineBreak,15265230,861,322)
{
Caption="3"
link(Out,16564429:doEvent2,[])
Primary=[13233314,-567,-21]
}
Add(Label,14672857,525,224)
{
Left=5
Top=425
Width=65
Height=30
}
Add(If_else,15176481,518,91)
{
Op1=Integer(0)
link(onTrue,659226:doTimer,[])
}
Add(Timer,659226,574,91)
{
Interval=10
Enable=1
link(onTimer,327499:doStrCat,[(620,97)(620,203)(457,203)(457,230)])
}
Add(GL_PolygonMode,2724116,910,399)
{
Side=2
Mode=1
link(onPolygonMode,2128545:doWork2,[])
}
Add(GL_PolygonMode,6287378,910,357)
{
Side=2
Mode=2
link(onPolygonMode,2128545:doWork1,[(963,363)])
}
Add(Counter,2411833,840,343)
{
Max=1
}
Add(IndexToChanel,15952797,840,392)
{
Point(Index)
link(onEvent1,6287378:doPolygonMode,[(883,398)(883,363)])
link(onEvent2,2724116:doPolygonMode,[])
link(Index,2411833:Count,[])
}
Add(HubEx,2128545,959,399)
{
link(onEvent,12642073:doEnum,[])
}
Add(StrCat,327499,469,224)
{
link(onStrCat,14672857:doText,[])
link(Str1,5517251:MouseX,[])
link(Str2,5517251:MouseY,[])
}
Add(HBoxLayout,2717337,217,126)
{
Name="horiz1"
Space=3
Padding=3
Layout=""
}
Этот топик читают: Гость
Ответов: 62
Рейтинг: 0
|
|||
При изменении колесом мыши zoom в PainBox обрезается рисунок, хотя сам размер PainBox больше. Подскажите , как исправить. Спасибо.[scroll=]
|
|||
карма: 0 |
|
Ответов: 8930
Рейтинг: 823
|
|||
buchkov, да всё работает
схема
|
|||
карма: 19 |
|
Ответов: 2277
Рейтинг: 677
|
|||
Леонид, объяснили бы лучше, зачем ТС рабочая схема если ему нужно знать почему не работает.
buchkov, в вашей схеме обрезается рисунок, так как вначале до того как элемент слой (HBoxLayout: Горизонтальный слой) растянул на весь экран, произошло событие onCreate у формы (MainForm) и GL_Main установил окно вывода и его размер (doViewPort). Вам нужно задействовать onResize формы(MainForm) или PaintBox-а, чтобы заново выставить размер(doViewPort). Должно работать правильно. Надеюсь понятно объяснил. Если что не понятно спрашивайте. Вот ваша схема с правкой (добавлена одна связь): схемка
|
|||
карма: 11 |
| ||
Голосовали: | buchkov |
Ответов: 9906
Рейтинг: 351
|
|||
sla8a писал(а): если ему нужно знать почему не работаетМежду прочим, это можно увидеть из схемы Леонид-а. Но не из Вашей, sla8a. Редактировалось 1 раз(а), последний 2017-01-09 16:42:17 |
|||
карма: 9 |
|
Ответов: 2277
Рейтинг: 677
|
|||
Galkov, вы вообще сейчас о чем?
Galkov писал(а): Может ему следует знать, что для использования колеса следует использовать onMouseWheel?Galkov писал(а): Между прочим, это можно увидеть из схемы Леонид-а.Galkov писал(а): Но не из Вашей, sla8a.Вы хоть мой пост с описанием проблемы и ее решением читали? И где вы вообще тут мою схему увидели? Редактировалось 3 раз(а), последний 2017-01-09 17:19:17 |
|||
карма: 11 |
|
Ответов: 2277
Рейтинг: 677
|
|||
Вот вам схема Леонида (мной лишь добавлены слои) которая точно так же, как и схема buchkov-а при увеличении масштаба обрезает фигуру сверху.
схема
Редактировалось 2 раз(а), последний 2017-01-09 18:40:09 |
|||
карма: 11 |
|
Ответов: 9906
Рейтинг: 351
|
|||
sla8a писал(а): вы вообще сейчас о чем?Мы сейчас о том, что никаким колесом никакой Zoom не делается вообще. И фокус невидимому элементу не передается. И работает колесо только когда мЫша над видимым элементом. В win-10 v.1607. XP ставить не буду. sla8a писал(а): Вы хоть мой пост с описанием проблемы и ее решением читали?Мы читали, и мы увидели (на схеме Леонид-а, а не Вашей), что это не решение, а бред сивой кобылы. Не надо делать doViewPort по любому Resize. Надо один раз установить размеры окна отображения (Image, PaintBox, ...) равными, скажем, размерам экрана. До выполнения GL_Main.doInit |
|||
карма: 9 |
|
Ответов: 2277
Рейтинг: 677
|
|||
Galkov писал(а): Мы сейчас о том, что никаким колесом никакой Zoom не делается вообще.buchkov писал(а): При изменении колесом мышиGalkov писал(а): на схеме Леонид-а, а не Вашейsla8a писал(а): Вот ваша схема с правкой (добавлена одна связь)Galkov писал(а): ... это не решение, а бред сивой кобылы.
Не надо делать doViewPort по любому Resize. Надо один раз установить размеры окна отображения (Image, PaintBox, ...) равными, скажем, размерам экрана. До выполнения GL_Main.doInit Значит использовать onResize - это бред сивой кобылы и вы знаете как это сделать по другому, а схема где? Мне очень хочется посмотреть как вы это сделаете. Напомню вам два момента: это использования горизонтального слоя и у формы свойство BorderStyle = bsSizeable. Давайте не уходить от вопроса. ТС спросил почему у него обрезается рисунок, а вы его (даже не его, а меня) учите использовать onMouseWheel, хотя по схеме видно, что onMouseWheel использовал (точка подключена), просто из-за проблемы скорее всего начал метод тыка. Леонид, Galkov, вы хоть скажите у вас при компиляции схемы ТС и увеличения фигуры наблюдается обрезания верха фигуры? А то может у вас все нормально и вы вообще не понимаете проблемы ТС. |
|||
карма: 11 |
|
Ответов: 8930
Рейтинг: 823
|
|||
sla8a писал(а): у вас ... наблюдается обрезания верха |
|||
карма: 19 |
|
Ответов: 9906
Рейтинг: 351
|
|||
sla8a, дорогой, ты чего из трусов выпрыгиваешь.
Использование колеса путем передачи фокуса невидимому элементу - это тоже бред сивой кобылы. Вполне себе достаточно, чтобы показать нормальный способ. Человек чешет левой ногой правое ухо - это повод, чтобы предположить, что он не знает о том, что рукой легче и проще. Мне так кажется. Если Вам кажется по другому - ну на здоровье, Ваши проблемы. Не мои. Не приставайте ко мне по этому поводу, пожалуйста. sla8a писал(а): Значит использовать onResize - это бред сивой кобылыНепропорциональный Zoom во время Resize - заслуживает именно такого названия. sla8a писал(а): и вы знаете как это сделать по другомуХорошо, расскажу еще раз. В стиле "для Писателей" (не длиннее 256 символов): тупо увеличьте размер контрола рисования. Сделайте высоту, для примера, не 555 - а 1000. А ширину - 2000 (а не 1325). Неужели не видно, что обрезание идет именно по этой высоте (555), и этой ширине (1325). Надо полсотни элементов (большой половиной из которых я не пользовался) вывалить на форум, потому-что некто -- в фразу из пяти слов въехать не может... DIXI Леонид, zooming логично делать не по линейному закону, а по экспоненциальному... Не прибавлять/отнимать от масштаба чего-то там, а умножать/делить на 1.1 (к примеру) Редактировалось 1 раз(а), последний 2017-01-11 16:56:12 |
|||
карма: 9 |
|
Ответов: 2277
Рейтинг: 677
|
|||
Galkov, может уже хватит. Давайте схему, а то текста много, а помощи от вас ТС = 0.
Galkov писал(а): Сделайте высоту, для примера, не 555 - а 1000. А ширину - 2000 (а не 1325).
Неужели не видно, что обрезание идет именно по этой высоте (555), и этой ширине (1325). Да видно мне было это изначально. Это вы не видете что это вы бред советуете. Объясню почему. Даже если выставить как вы пишите высоту и ширину больше, соглашусь обрезать не будет. Но VeiwPort, а затем и Perspective возьмут эти размеры окна и выстоят по этому окну перспективу. А после того как окно растянется на весь экран и слой подгонит размер PaintBox-а, OpenGL будет криво выводить изображение используя ранее установленные данные. Как и писал выше, нужно после того как размер PaintBox-а выставится слоем сделать doViewPort и перспектива выставиться соответственно. И onResize тут самое то. Если вы схему своей идеи не выложите спорить с вами дальше не имеет смысла. |
|||
карма: 11 |
|
Ответов: 62
Рейтинг: 0
|
|||
По схеме Леонида тоже обрезаеться Извините за флуд. Недумал, что мой вопрос вызовет столько эмоций у Уважаемых людей. Спасибо за ответы. Попробую каждый вариант.
sla8a прав все работает. Всем спасибо. Редактировалось 4 раз(а), последний 2017-01-14 09:56:41 |
|||
карма: 0 |
|
12