Текущий архив: 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.47 MB
Время: 0.01 c