Замечен глюк с Form_Paint

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Бутч
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 29.04.2005 (Пт) 17:30
Откуда: Днепр

Замечен глюк с Form_Paint

Сообщение Бутч » 06.05.2005 (Пт) 19:54

Недавно заметил, что при использовании стандартного события Form_Paint форма не рендерится при уменьшении её размеров. Если увеличивать, восстанавливать полный размер всё проходит нормально.
Но это только если прорисовывать постоянно:
Код: Выделить всё
Do while IsRunning = True
DoEvents
Render
Loop


А если для рендеринга использовать обычный таймер, то все работает нормально. В чем же дело? :?
"Пусть вон тот желтый кубик будет для наглядности синим шариком."

Windows XP: compiling 95%...
- Билл, опять повисло!
- Ничего, сойдет.

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 06.05.2005 (Пт) 21:49

Какой ДХ?

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 06.05.2005 (Пт) 21:59

Бутч, все просто. Событие Paint происходит при перересовке формы, которая в свою очередь происходит, когда часть формы НЕ прорисована. Когда ты уменьшаешь форму прорисовывать ее лишний раз не имеет значения, так так область видимости уменьшается, а не увеличивается.
ХЎ

Бутч
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 29.04.2005 (Пт) 17:30
Откуда: Днепр

Сообщение Бутч » 06.05.2005 (Пт) 22:10

Ммм...Логично. Но ведь это не красиво. При уменьшении формы картинка просто обрезается с краёв. Кроме того если если её(форму) после сжатия начать сразу растягивать, то картинка рендерится мягко говоря не плавно, что бьет по глазам. Выглядет не профессионально. Можно ли это как то обойти? В играх редко изменяется размеры окна, тем более, что такую перерисовку во избежание тупняков лучше отключить, а вот в небольших софтовых программках такой баг лучше убрать.
"Пусть вон тот желтый кубик будет для наглядности синим шариком."

Windows XP: compiling 95%...
- Билл, опять повисло!
- Ничего, сойдет.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 06.05.2005 (Пт) 22:23

поставь на Form_Resize вызов Form_Paint и будет тебе счастье =)
ХЎ

Бутч
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 29.04.2005 (Пт) 17:30
Откуда: Днепр

Сообщение Бутч » 06.05.2005 (Пт) 22:33

Уже пробовал 8) . Выдает ошибку при запуске. Раньше я таймером пользовался, а теперь сделал по совету Антилупа.
Вот сам код. Посмотри пожалуйста.
У вас нет доступа для просмотра вложений в этом сообщении.
"Пусть вон тот желтый кубик будет для наглядности синим шариком."

Windows XP: compiling 95%...
- Билл, опять повисло!
- Ничего, сойдет.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 06.05.2005 (Пт) 22:50

Бутч, а зачем у тебя и в цикле рендер стоит и в Form_Paint? В этом случае второе - лишнее.

Если выдает ошибку при запуске, то поставь

Код: Выделить всё
If Not Device Is Nothing Then Render
ХЎ


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList