![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
В моей проге довольно много различных контролов, почти на всех свои картинки и к тому же много прозрачности (прозрачные сами картинки на контролах, прозрачные панельки и т.д.). В основном программа работает на видимости/невидимспанелей (т.е. на somecontrol.Visible = true/false). Всё это сильно моргает и относительно долго прорисовывается. Всё это будет стоять в публичных местах и просто по зарез надо убрать такие моргания. У формы в SetStyle уже стоит DoubleBuffered, AllDrawingInPaint (ну или что-то такое), OptimizedDoubleBuffered - результат чисто "на глаз" просто никакой (я не заметил изменений).
Что делать-то с этим? Как лечиться? |
|||
|
||||
| VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 1 Всего: 6 |
Почему оно моргает? Чё там у тебя такое хитрое, что ничего не работает?
-------------------- 3 ГОДА НА |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
||||
|
||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 4 Всего: 13 |
попробуй делать все изменения в блоке
SuspendLayout ... ResumeLayout -------------------- "Тонкая, однако, работа." |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
Нууу... что делаю... программу я делаю %).
Значит что я делал - накидал всяких панелек на форму (панели друг на друге). Из этих панелей только одна Visible = true. На этой первой панели можно выбрать категорию каталога. Как только юзер счёлкает по кнопке - панелька с выбором категории становится Visible = flase и другая панелька (на которой идёт инфа о категории) становится Visible = true. Это основной принцип работы программы. И вот именно на переключении видимости/невидимости панелей программа моргает. Общее количество контролов - около 60. Не знаю, влияет ли это. Если нужен какой-либо кусок кода, то скажите какой. Повторюсь - моргание идёт всегда на переключении видимости контролов. Больше нигде. На все контролы натянуты свои фоны. Эти все фоны PNG, причём с прозрачностью. Почти везде BackColor = transparent. Не знаю чего ещё рассказать... Добавлено @ 08:41 -ser-, у мя так - если на панели x, происходят изменения контролов, то эти изменения обязательно проходят в Суспенд/Резюм. Так слушайте, а правильно ли я двойной буфер вставил?... Я его только на форму поставил, т.к. в контролах нет такой возможности... Мож куда в контролы надо запихать? |
|||
|
||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 4 Всего: 13 |
попробуй вместо панелей использовать табконтрол, у которого можно не показывать шапки.
только не помню, есть ли в стандартном такая возможность. во всех других третьесторонненаписанных это можно делать. хотя уверен, умельцы уже что-то и со стандартным понаделали если хорошо поискать. у меня год назад была подобная проблема, и я решил это вообще делать через две модальные формы, и разумеется, mr.DUDA, мне ее решил, хоть потом (опять ему же) пришлось дорабатывать побочные эффекты. ссылку пока специально не даю, ибо моя идея изначально была кривая, хоть так по сей день все и продолжает работать. полагаю, в твоем случае таб может спасти. -------------------- "Тонкая, однако, работа." |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
ммм... я с табконтролом пробовал возится. в стандартном без проблем можно сделать так, чтобы сами табы не показывались, только вот я так и не понял как ему прозрачный фон назначить. т.е. самим страницам таба можно, а вот у табконтрола даже проперти такой нету (или я не нашёл???)
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Можно перекрыть WndProc() у формы, и на время переключения между панелями запрещать/разрешать обработку WM_PAINT. Код сообщения WM_PAINT можно узнать рефлектором. Чтобы запретить обработку сообщения, в перекрытом WndProc достаточно просто не вызывать base.WndProc().
-------------------- ![]() |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 1 Всего: 48 |
ага, в этом вся беда. у всех контролов есть свойство DoubleBuffered, но оно протектед. либо наследуй, либо через рефлекшен. хотя бы для панелей это просто необходимо. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
Всё. Дурак я полный. Породил свою собственную панельку и поставил ей дабл-буфер. Моргание исчезло. Спасиб всем. Вопрос решён.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |