Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
Внизи снова мерцание картинки при перерисовке (использую 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c