2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Вывод изображения без мерцания
Сообщение29.11.2008, 16:55 


22/09/08
20
Иваново
Программирую на С++. необходимо было сделать отрисовку столбчатой диаграммы, и в качестве теста значения высот столбцов диаграммы задаются рандомно.
Вот кусок кода, осуществляющий отрисовку(на примере 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 
Аватара пользователя


31/10/08
1244
Сделай у формы свойство doublebuffered=true; И мерцаний не будет.

 Профиль  
                  
 
 
Сообщение30.11.2008, 12:21 


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

 Профиль  
                  
 
 
Сообщение02.12.2008, 08:35 


21/03/06
1545
Москва
Pavia писал(а):
Сделай у формы свойство doublebuffered=true; И мерцаний не будет.

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group