Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Вниз

Не работает 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
6-1136870292
[Gss]Pass
2006-01-10 08:18
2006.05.07
TIdSocketHandle


15-1144517937
Зм1й
2006-04-08 21:38
2006.05.07
Странный вопрос


2-1145614337
KygECHuK
2006-04-21 14:12
2006.05.07
добавление длинной строки в StringGrid


15-1145097872
Volf_555
2006-04-15 14:44
2006.05.07
Как использовать функцию MONEY_FORMAT в PHP?


15-1144816944
Старик
2006-04-12 08:42
2006.05.07
Резервное копирование





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский