Программирую на С++. необходимо было сделать отрисовку столбчатой диаграммы, и в качестве теста значения высот столбцов диаграммы задаются рандомно.
Вот кусок кода, осуществляющий отрисовку(на примере 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)));
}
}
В тестовом приложении все это выполняется через таймер. но возникла такая проблема - при перерисовке изображения окно компонента мерцает, и это мерцание необходимо убрать.
Смотрел, как убрать данную проблему и как один из способов - предлагается создать внеэкранный битовый образ, все действия про прорисовке выполнить в нем, а потом готовое изображение вывести на канву компонента.
Пожалуйста, покажите это на конкретном примере, а то чтобы я не пробовал, приводит к еще большему мерцанию
Спасибо.