Главная страница
    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.025 c
1-1155738480
vase21
2006-08-16 18:28
2006.10.01
Фотография выделенной части формы


15-1157806975
new_user1
2006-09-09 17:02
2006.10.01
Как узнать...


15-1158054448
комар
2006-09-12 13:47
2006.10.01
кодировка


15-1157982695
Cyrax
2006-09-11 17:51
2006.10.01
Тонкости Delphi


4-1148385752
alexaken
2006-05-23 16:02
2006.10.01
Подлождать пока форма закроется или спрячется





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