Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с двойной буфферизацией 
:(
    Опции темы
Витька
Дата 5.2.2005, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 5.2.2005

Репутация: нет
Всего: нет



Здравствуйте. Я NET только начал осваивать и пролема такого плана. Необходимо, чтобы задний фон формочки не перерисовывался при вызове Invalidate() (или что правильно использовать для перерисовки?).

В mfc можно было вызвать Invalidate(false) и перехватить WM_EraseBackground

А как сделать подобное в C# или в С++ Windows Forms?
PM MAIL   Вверх
Domestic Cat
Дата 6.2.2005, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 9
Всего: 172



А что значит "задний фон формочки" и при чем тут в такой постановке вопроса двойной бафферинг?


--------------------

PM   Вверх
Витька
Дата 6.2.2005, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 5.2.2005

Репутация: нет
Всего: нет



при вызове Invalidate, сначла рисуется задний фон окошка (BackGround, если совсем по-глупому - то, что по умолчанию серенькое)

а потом поверх вего этого дела - всё то, что написано в OnPaint

если при этот порастягивать - поуменьшать окошко, или Invalidate делать по таймеру, то всё будет здОрово так мигать,
ибо становится видно как сначала поверх всего залился задник, а потом пошло рисоваться то, что в OnPaint

когда я писал под mfc делал так - глушил erasebackground - после чего задний фон не перерисовывался вообще

а в OnPaint самостоятельно заливал фон, рисовал поверх него все на другом DC (если здесь, то на Graphics), что нужно и потом результат переносил в окошко (то есть в DC (или Graphics), связанный с моим окном)

прошу прощения, если непонятно
PM MAIL   Вверх
Domestic Cat
Дата 6.2.2005, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 9
Всего: 172



Ну на самом деле все очень просто, нужно на объекте формы вызвать
Код

SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);



--------------------

PM   Вверх
Витька
Дата 7.2.2005, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 5.2.2005

Репутация: нет
Всего: нет



Как говорится - большой человеческий спасиб.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.