Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.17;
Скачать: CL | DM;

Вниз

и снова мерцание картинки при перерисовке (использую BitBlt)   Найти похожие ветки 

 
ari_9   (2007-05-23 01:58) [0]

на форме лежит несколько панелей и сплитеров, на одной из панелей лежит xImage:TImage. сделал так потому, что удобно не обрабатывать его размеры, а просто задать Align = alClient панели. по onResize или другим действиям пользователя вызывается функция перерисовки изображения

код примитивный

var
 xBMP: TBitmap;
...
 xBMP := TBitmap.Create;
 xBMP.Width := xImage.Picture.Bitmap.Width;
 xBMP.Height := xImage.Picture.Bitmap.Height;
...
 заполняю xBMP
...
 BitBlt(xBMP.Handle, 0, 0, xBMP.Width, xBMP.Height,
   xImage.Canvas.Handle, 0, 0, SRCCOPY);
 xBMP.Free;


при этом все ресайзы и, соответственно, перерисовки сопровождаются очень неприятным мерцанием. что я делаю неправильно ? как я понимаю, при использовании BitBlt нет смысла играться с DoubleBuffered ?.. или для лежащего на форме TImage в принципе нельзя добиться отсутствия мерцания,  нужно было рисовать прямо на канве панели ?

понимаю, что вопрос обсуждается регулярно, но поиском не нашел ответа


 
ari_9   (2007-05-23 11:37) [1]

все утро играюсь, от мерцания не избавился

нужна помощь


 
clickmaker ©   (2007-05-23 11:42) [2]


> BitBlt(xBMP.Handle

что это? Там же HDC должно быть
и непонятно: рисовать-то надо на xBMP или все же на Image?


 
ЮЮ ©   (2007-05-23 11:48) [3]


> код примитивный
>
> var
>  xBMP: TBitmap;
> ...
>  xBMP := TBitmap.Create;
>  xBMP.Width := xImage.Picture.Bitmap.Width;
>  xBMP.Height := xImage.Picture.Bitmap.Height;


Да уж. А без указания обработчика и бесполезный.
А почему после формирования xBMP просто не сделать xImage.Picture.Assign(xBMP), если BitBlt сдерживает указать DoubleBuffered у формы?


 
Loginov Dmitry ©   (2007-05-23 12:56) [4]

Нафик здесь вообще TImage нужен? Рисуй на канве формы или на TPaintBox"е.



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

Текущий архив: 2007.06.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
15-1179986559
Knight
2007-05-24 10:02
2007.06.17
Как у вас апгрейды оформляют?


9-1153370196
aKirill.INFO
2006-07-20 08:36
2007.06.17
Несколько экранов


9-1153902502
Илья Щукин
2006-07-26 12:28
2007.06.17
Ошибка компиляции


4-1167870999
Альберт
2007-01-04 03:36
2007.06.17
Почему кнопка не становится прозрачной?


2-1180116372
A Programmer
2007-05-25 22:06
2007.06.17
Правильно ли создаётся и уничтожается TEdit?