![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Создаётся форма. На ней (или на панели) что-то рисуем. Затем перетаскиваем форму за пределы экрана, затем выдвигаем обратно. При этом скрытая часть формы/панели очищается. Требуется перерисовка. В обработчике OnPaint перерисовываем рисунок на форме/панели. Но при этом появляются страшные тормоза.
Как организовать перерисовку формы/панели без тормозов ? Т.е. необходимо плавное выдвижение формы из-за экрана и т.п. Необходимо сделать так, как это происходит в Windows. Сохранение части экрана в памяти ? Двойная буферизация ? или что-то другое... |
|||
|
||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 1 Всего: 48 |
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Разве на это как-то повлияет двойная буферизация ? Собственно, на тормоза (при перерисовке в процессе выдвижения формы из-за границы экрана) двойная буферизация никак не повлияла... Как по мне, тут нужна не двойная буферизация, а сохранение в памяти скрываемой за экраном части формы (bitmap)... Как это реализовано в виндовых формах ? |
|||
|
||||
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Как в стандартных формах реализована отрисовка части изображения, оказавшейся за пределами экрана, при выдвижении формы из-за экрана ?
Явно не перерисовка всех элементов формы. Как-то через сохранение bitmap'а... |
|||
|
||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: 2 Всего: 4 |
Ну верно, рисуешь на битмапе и по мере необходимости сбрасываешь на экран.
Подмечен интересный факт: если в дотнете первой версии для безмерцательного вывода изображения лучше всего битмап с оным присваивать свойству BackgroundImage контрола, то во второй версии подойдет более логически понятный DrawImage графикса. --------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Можно ли пустой битмап получить сразу из объекта Graphics, чтобы не вычислять размеры ?
|
|||
|
||||
Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 1 Всего: 15 |
Нет, Graphics, в принципе, кроме хандла объекта больше ничего об объекте не знает. -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: 2 Всего: 4 |
Может опять чего не допонял - обычно Graphics получают из битмапа, да и размеры вычислить не долго:
--------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 4 Всего: 62 |
||||
|
||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: 2 Всего: 4 |
Так о том и речь - рисуешь на битмапе, а в OnPainte сбрасываешь его на контрол.И ни каких мерцаний и тормозов. Рисовать в памяти наверно быстрее, чем на устройстве?
--------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 4 Всего: 62 |
![]() |
|||
|
||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: 2 Всего: 4 |
...вот они последствия ООП ... вот что такое абстракция ... люди уже не различают разницы между контекстом устройства и памятью...
--------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: нет Всего: 25 |
||||
|
||||
tdebugger |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: 2 Всего: 4 |
Если .NET второй , то примерно вот так:
Не рекомендую делать это где бы то не было еще( во всяких там конструкторах-деструкторах), контекст устройства -ресурс ограниченный, его беречь надо. А рисовать соответственно так:
Так то панель. Но вся штука в том , что когда мы рисуем через Graphics какого-либо контрола, мы, по сути дела, рисуем в памяти видекарты - то что я назвал "устройством". --------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
||||||
|
|||||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: нет Всего: 25 |
спасибо
Добавлено через 12 минут и 10 секунд кстати, используя этот метод, избавиться от сильного моргания не получилось. (вроде для того и рисовали). А зато, когда поставил
у своего контрола, то мерцания исчезли и без этих ухищрений. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |