![]() |
Изменение размера области рендера
Вложений: 1
Использую функцию xSetRenderWindow для вывода графики в элемент управления на форме. Не могу понять, как правильно изменять размер этой области. Делаю так: (код PowerBasic 10)
Код:
... Код:
cw = LO(WORD, CB.LPARAM) 'new main window width В чем может быть прикол? Идеи есть? |
Ответ: Изменение размера области рендера
А если просто изменить размер области просмотра камеры? Например было столько - то а при нажатии кнопки изменить. Изменится или нет?
|
Ответ: Изменение размера области рендера
Судя по всему, viewport создается и ресайзится правильно, трабла в стретчинге (stretch) окна вывода (использую image control). Только не пойму, трабла в xors3d или PB10...
|
Ответ: Изменение размера области рендера
Вложений: 1
УРА! Разобрался!
Пришлось помудрить, но результат того стоит. Вот основная идея сабжа: Идея состоит в том, что лишняя часть картинки рендера обрезается и показывается только область viewport. 1) Установить размер бекбуфера равный текущему разрешению рабочего стола 2) Установить viewport равный области вывода 3) областью вывода будет IMAGE CONTROL Но тут есть ньюанс: 1. Если напрямую изменять размер IMAGE CONTROL, то картинка рендера растягивается (как в посте 1) Для преодоления данного ограничения воспользуемся дополнительным родительским элементом FRAME, засунув в него IMAGE CONTROL. Изменять размеры будем не IMAGE CONTROLа (размеры которого установим равными размерам рабочего стола), а именно FRAME контрола, который скроет "лишнюю" часть области рендера (IMAGE контрола) и будет содержать только область Viewport`а. Размеры окна теперь можно без проблем менять: |
Ответ: Изменение размера области рендера
Единственное, с чем нужно еще разобраться - при изменении размера главного окна область рендера "мигает", что сильно напрягает. Есть идеи как это пофиксить?
|
Ответ: Изменение размера области рендера
Вот и нашел решение (слишком быстро, чем ожидал):
надо вместо контейнера FRAME использовать GRAPHIC со стилем окна %WS_CLIPCHILDREN, а дочерний элемент тоже использовать GRAPHIC. Тогда мелькания не будет. У главного окна тоже должен быть стиль %WS_CLIPCHILDREN. |
Re: Изменение размера области рендера
А проблем с управлением (мышь, клава) не возникает? На пурбейсике когда то меня подобный трик остановил только из-за затыков с инпутом
|
Ответ: Изменение размера области рендера
Для корректной работы с вводом нужно ОБЯЗАТЕЛЬНО использовать функцию:
Код:
xSetTopWindow hDlgMW 'set main window as input window |
Re: Изменение размера области рендера
Я начинал когда еще не было этой функции. Теперь извраты с хуками на окно не нужны ))
|
Часовой пояс GMT +4, время: 02:08. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot