Главная страница
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.031 c
15-1145135870
Std
2006-04-16 01:17
2006.05.07
TregExpr


3-1142226823
Chel
2006-03-13 08:13
2006.05.07
Поиск в списочных компонентах


15-1144809637
Skyle
2006-04-12 06:40
2006.05.07
EPL 2, принтеры этикеток


15-1145254598
Rouse_
2006-04-17 10:16
2006.05.07
Презентация Guardant Stealth 3


2-1145371762
Beni
2006-04-18 18:49
2006.05.07
HexToBin(), BinToHex()