Главная страница
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.028 c
5-1130227678
DimaBr
2005-10-25 12:07
2006.05.07
Редакторы компонент


3-1142270063
Bolek
2006-03-13 20:14
2006.05.07
ползователи и хранимые процедуры


3-1142301937
Sollo
2006-03-14 05:05
2006.05.07
Как выключить вычисляемые поля ?


9-1128282128
3d[Power]__
2005-10-02 23:42
2006.05.07
OGG via directsound


3-1142329116
hursand
2006-03-14 12:38
2006.05.07
текcтавом формате