2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Вывод изображения без мерцания
Сообщение29.11.2008, 16:55 
Программирую на С++. необходимо было сделать отрисовку столбчатой диаграммы, и в качестве теста значения высот столбцов диаграммы задаются рандомно.
Вот кусок кода, осуществляющий отрисовку(на примере PaintBox):

float x, ypos=0, y=250, z=250, st=4, min=10, shirina = 150;
PaintBox1->Canvas->Brush->Color = clBlack;
PaintBox1->Canvas->FillRect(Rect(0, 0, PaintBox1->Width,
PaintBox1->Height));
PaintBox1->Width = (shirina*(st+1));
PaintBox1->Height = z;
ypos = PaintBox1->Height;
ypos+=min;
x=-(st/2);
PaintBox1->Canvas->Pen->Color = clLime;
randomize();
for (int k=0; k<150; k++)
{
x+=(st+1);
PaintBox1->Canvas->Pen->Style = psSolid;
PaintBox1->Canvas->Pen->Width = st;
PaintBox1->Canvas->MoveTo(x, ypos);
PaintBox1->Canvas->LineTo(x, ypos-(random(y)));
}
}

В тестовом приложении все это выполняется через таймер. но возникла такая проблема - при перерисовке изображения окно компонента мерцает, и это мерцание необходимо убрать.
Смотрел, как убрать данную проблему и как один из способов - предлагается создать внеэкранный битовый образ, все действия про прорисовке выполнить в нем, а потом готовое изображение вывести на канву компонента.
Пожалуйста, покажите это на конкретном примере, а то чтобы я не пробовал, приводит к еще большему мерцанию :(
Спасибо.

 
 
 
 
Сообщение29.11.2008, 20:16 
Аватара пользователя
Сделай у формы свойство doublebuffered=true; И мерцаний не будет.

 
 
 
 
Сообщение30.11.2008, 12:21 
Pavia писал(а):
Сделай у формы свойство doublebuffered=true; И мерцаний не будет.
Спасибо, вроде нормально работает.

 
 
 
 
Сообщение02.12.2008, 08:35 
Pavia писал(а):
Сделай у формы свойство doublebuffered=true; И мерцаний не будет.

И от меня спасибо - давно искал, как исправить этот эффект, появившейся в BC Builder 6.0

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group