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

Вниз

Как устранить мерцание вторичных окон?   Найти похожие ветки 

 
Селезин ©   (2006-08-20 02:28) [0]

Имеется, значит три TImage, нижний (1-й) по размерам совпадает с окном, два верхних лежат поверх, частично перекрывая нижнее (3-е перекрывает еще и 2-е), причем оба с прозрачностью. При перерисовке канвы 1-го окна часто (но не всегда) два верхних окна мерцают. Поскольку нижнее окно подчас перерисовывается достаточно часто, мерцание утомляет. Можно с этим как-то справиться? Нижнее окно не слишком волнует, а вот верхние два хотелось бы иметь визуально немерцающими.


 
Pavia ©   (2006-08-20 02:37) [1]

Попробуй Form1.DoubleBuffered:=True;
А вобще правелнее сделать один имадж, или еще лучше без него прям на канве формы рисовать.
Советую посмотреть TransparentColor example и отрисовку повесить на событие OnPaint


 
Селезин ©   (2006-08-20 03:10) [2]

Thank, DoubleBuffered помог.
А рисовать на один имадж не хочется, лишние расчеты пойдут, оно, конечно лучше, но не в моем случае.


 
Loginov Dmitry ©   (2006-08-20 09:55) [3]

> лишние расчеты пойдут


Что за лишние расчеты?

Выполняйте всю прорисовку в буфере в памяти (TBitmap) (соответственно их должно быть 3 штуки), а при необходимости выводите их содержимое на канву TImage с помощью Image1.Canvas.Draw(X, Y, Bitmap);
В итоге никаких мерцаний не будет, и глюков, связанных с Form1.DoubleBuffered.


 
aster_x ©   (2006-08-20 11:31) [4]


> лишние расчеты пойдут

Когда прорисовываешь, на одну канву. то пикселы накладываются друг на друга.
Так что все равно много не с экономишь времени.
Зато памяти можно поберечь дай бог.


 
Мефисто   (2006-08-20 11:51) [5]


> Loginov Dmitry ©   (20.08.06 09:55) [3]


Два TBitmap - не есть гуд. Лучше один TBitmap под буфер а выводить на TPaintBox или непосредсвенно на конкретно нужную канву.


> aster_x ©   (20.08.06 11:31) [4]



> Когда прорисовываешь, на одну канву. то пикселы накладываются
> друг на друга.Так что все равно много не с экономишь времени.
>


Не ясна суть данного высказывания.
И как в твоем случае память экономится?

А по вопросу совет уже дан. Отрисовывать все в буферном TBitmap и выводить все за один присест. Мерцать компонеты будут, т.к. сие компонеты получают сообщение от системы что нужно перерисоваться т.к. все время самый нижний TImage перерисовывается. При таком подходе как Селезин  ©   (20.08.06 02:28)  от мерцания избавиться будет невозможно.


 
Селезин ©   (2006-08-21 00:57) [6]

Ну DoubleBuffered отлично справляется. А что за возможные глюки с ним? Покуда ничего не видел.
Насчет остального. Не знаю насколько сэкономится памяти при прорисовке на одну канву. Дело в том, что два верхних окна мобильные и могут во время работы приложения подсчитываться из разных файлов на диске. Как-то не уверен, что отрисовка на канву одного имадже сильно сэкономит память, если каждый раз придется выкачивать две картинки из файла. Так что как бы один черт нужно три канвы. И плюс еще одна для сведенного рисунка? Или считывание картинки из файла берет памяти и времени меньше, чем хранимая на канве копия?


 
Мефисто   (2006-08-21 12:52) [7]

Как часто требуется перерисовывать изображение? Как часто подгружаются файлы в имиджи? При DoubleBuffered создается еще один временный TBitmap


 
Loginov Dmitry ©   (2006-08-21 19:09) [8]

> Два TBitmap - не есть гуд. Лучше один TBitmap под буфер
> а выводить на TPaintBox или непосредсвенно на конкретно
> нужную канву.


Почему не есть гуд? Зависит от ситуации. Допустим есть статичная картинка, на которой рисуются динамически какие-то изображения. Под статичную картинку естестенно выделить отдельный буфер. Далее можно этот буфер скопировать во второй Битмап, и в нем уже рисовать.


> Селезин ©   (21.08.06 00:57) [6]


Операций с чтением из файла должно быть как можно меньше. Это самая длительная операция.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.014 c
1-1155883673
brother
2006-08-18 10:47
2006.10.01
TWebBrowser


2-1157712853
v_o_v_a
2006-09-08 14:54
2006.10.01
класс TStringList


15-1157752849
Tar[OFF]
2006-09-09 02:00
2006.10.01
Web Programming


2-1157791558
oleg_v
2006-09-09 12:45
2006.10.01
DBGridEh и селект


4-1148483533
Raptoridzevv
2006-05-24 19:12
2006.10.01
Tchecklistbox





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