Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Режим Aero + Vista или Seven, = проблемы с отрисовкой и DrawFocusRect 
V
    Опции темы
lukas
  Дата 10.11.2009, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Люди добрые, изнурил я себя уже поисками по всяким форумам и королевствам, никто эту проблему даже не обсуждает, а она на лицо.

Дело в том, что в режиме aero в висте и 7ке приложение отрисовываются необычным способом и при использовании некоторых функций GDI появляются различные мерцания и мигания, как будто ос перерисовывает все с двойной силой. 

Например всеми известная функция DrawFocusRect(dc, rect). При ее усиленном использовании появляются такие мигания. Например я думаю все сталкивались с такой проблемой при использовании компонента TSizeControl, я пытаюсь это дело исправить.

Есть варианты, либо отключить режим аеро для определенного окна (или в крайнем случае для всего приложения), либо предложить какую нибудь альтернативу отрисовки окантовки. 

P.S. Как вы поняли, использую эту функцию для рисования окантовок при перемещении и изменении размеров контролов на форме в ран-тайм.


P.S.S. Если поможете, будет новая версия TSizeControl (я пофиксил много багов, поделюсь со всеми желающими).


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
lukas
Дата 10.11.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Люди победил я этот баг частично, но пришлось отрисовывать окантовку на канвасе формы, что имеет свои недостатки (оконтовка не накладывается поверх всех контролов).

Вот кому будет интересен компонент TSizeControl 7.2fix+

Изменение и доработки:

- Исправлен баг прорисовки в aero в висте и seven
- Исправлен баг при перетаскивании контрола за пределы формы, контрл в этих случаях сдвигался неестественно.
- Доработано - теперь компоненты двигаются по размеру GridSize, а не по одному пикселю, т.е. как в делфи с включенной сеткой.
- Отрисовывается автоматически сетка по свойству GridSize, если GridSize < 5 не отрисовывается ибо заметны мерцания.
- Оптимизированы некоторые методы отрисовки, вернее отрисовка минимизирована
- Убран хук с формы, который устанавливал TSizeControl для того чтобы можно было назначать события для формы


Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  SizeControl.rar 9,92 Kb


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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