Главная страница
    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.47 MB
Время: 0.01 c
2-1145516103
Zaq123
2006-04-20 10:55
2006.05.07
Проблема с записью в файл.


1-1143366898
Kolan
2006-03-26 13:54
2006.05.07
Как поместить класс в Dll или пакет?


15-1144997405
syte_ser78
2006-04-14 10:50
2006.05.07
вопрос по работе со временем.


2-1145508725
mfender
2006-04-20 08:52
2006.05.07
Округление


1-1143466199
DelphiLexx
2006-03-27 17:29
2006.05.07
Не работает DoubleBuffered при включенной тема Windows XP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский