Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.07;
Скачать: CL | DM;

Вниз

Не работает DoubleBuffered при включенной тема Windows XP   Найти похожие ветки 

 
DelphiLexx ©   (2006-03-27 17:29) [0]

Свои программные продукты я разрабатываю в Windows XP с темой "Классический стиль". У меня есть редактор - обычная форма на которой располагаются разные картинки + вокруг курсора мыши я веду отрисовку прямоугольника через Canvas.
При выключенном TForm.DoubleBuffered := false всё это дело маргает, при включенном TForm.DoubleBuffered := true всё это дело отлично работает. Как только я меняю тему Windows XP с "классический стиль" на "Стиль Windows XP", то всё опять начинает маргать и DoubleBuffered := true не помагает.
Как избавиться от моргания в XP при включенной теме "стиль Windows XP"?


 
Darvin ©   (2006-03-27 17:39) [1]

Самому реализовать двойную буфферизацию

Рисуешь сначала на невидимой канве, а затем с помощью CopyRect кидаешь нарисованное на видимую канву.


 
DelphiLexx ©   (2006-03-27 18:02) [2]


> Рисуешь сначала на невидимой канве, а затем с помощью CopyRect
> кидаешь нарисованное на видимую канву

1. А по каким причинам при включении темы DoubleBuffered перестаёт работать?
2. Примерчик не твоего алгоритма не мог бы кинуть?


 
DelphiLexx ©   (2006-03-27 18:04) [3]


> не твоего

Извини не правильно написал > Примерчик твоего алгоритма не мог бы кинуть?


 
Darvin ©   (2006-03-27 18:18) [4]

1. Создай битмап перед отрисовкой
2. Задай ему размеры, соответствующие канве
3. Рисуй на канве битмапа
4. После отрисовки
R.Left := 0; R.Top := 0;
R.Right := Width; R.Bottom := Height;
Видимая_канва.Canvas.CopyRect ( R, BitMap.Canvas, R );
где
R : TRect;

и ... вуа-ля


 
Чудак   (2006-03-27 21:25) [5]

Подключи XP manifest и вероятно заработает, как положено. Всё дело в том, что для XP стилей существует новая библиотека, отвечающая за прорисовку стандартных элементов, а по умолчанию подключается старая версия.


 
antonn ©   (2006-03-28 05:58) [6]

Чудак   (27.03.06 21:25) [5]
Подключи XP manifest и вероятно заработает, как положено.

манифест только ресурс подключает, и на версию не влияет


 
Рамиль ©   (2006-03-28 09:07) [7]


> манифест только ресурс подключает, и на версию не влияет

Вообще говоря, этот ресурс подключает манифест, который указывает системе использовать ComCtl32.dll версии 6. Так что на версию он точно влияет, но влият ли это на сабж я не знаю.


 
antonn ©   (2006-03-28 11:55) [8]

Рамиль ©   (28.03.06 9:07) [7]
я про XPmanifest, он только ресурс подключает.
если очень хочется, можно в тексте ресурса изменить данные...


 
DelphiLexx ©   (2006-03-28 15:10) [9]


> Подключи XP manifest и вероятно заработает, как положено.

Не заработало как положено.


 
antonn ©   (2006-03-28 15:56) [10]

более того, если подключить манифест, выставить форме Doublebuffered:=true и посавить в системе неклассическую тему, появятся проблемы с панелями и подобными контролами:)


 
DelphiLexx ©   (2006-03-28 17:05) [11]


> более того, если подключить манифест, выставить форме Doublebuffered:
> =true и посавить в системе неклассическую тему, появятся
> проблемы с панелями и подобными контролами:)

Я решил эту проблему след. образом:
ControlStyle := ControlStyle - [csParentBackground] + [csOpaque];



Страницы: 1 вся ветка

Текущий архив: 2006.05.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
15-1145130006
homm
2006-04-15 23:40
2006.05.07
Мой первый проект на PHP :)


2-1145525063
Beglec
2006-04-20 13:24
2006.05.07
TEdit - печать с права на лево


15-1145126517
Loginov Dmitry
2006-04-15 22:41
2006.05.07
Сюрприз, однако


2-1145451891
DimMih
2006-04-19 17:04
2006.05.07
TTable


15-1144973253
Дмитрий_177
2006-04-14 04:07
2006.05.07
Отключить на ноутбуке энергосберегающий режим