• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Вопрос: двойная буферизация!? Проблемы с мерцанием на канве

  • Автор темы woka
  • Дата начала
Статус
Закрыто для дальнейших ответов.
W

woka

как зделать двойную буферизацию на билдере? чтото типо
C++:
Form -> DoubleBuffer
но как именно дальше н помню
 
D

DarkKnight

C++:
		for (int i =0; i<100;i++)
{
Form1->DoubleBuffered = true;
Form1->Canvas->Brush->Color = RGB(i,0,0);
Form1->Canvas->Rectangle(10,10,120,120);
Form1->Canvas->Brush->Color = clRed;
Form1->Canvas->Ellipse(10+i,10+i,20+i,20+i);
Application->ProcessMessages();
Sleep(100);


}
 
W

woka

А зачем цыкл стоит перед Form1->DoubleBuffered = true;
да и зачем остальная часть этого же должно хватить
 
D

DarkKnight

Просто как пример....
А DoubleBuffered - за цикл конечно же... Случайно захватил его...
 
W

woka

на форм1 устанавливается буферизация, но у меня по экрану передвигается объект который как моргал так и моргает. может добавить ещё одну строку и вместо форм1 написать имя того обЪекта? или есть другие варианты?
 
D

DarkKnight

Рисуй в памяти просто и ничего дрыгатся не будет...
Кидай свой код, покажу...
 
D

DarkKnight

Вообще можно не перерисовывать контролы попробовать, должно помочь.. Не всегда но помогает...
Вот так:

C++:
Form1->ControlStyle << csOpaque;
Form1->DoubleBuffered = true;
 
D

DarkKnight

Не, ну если так оно и есть ;-)))

2 woka : А вот память никогда не подводит ;-))) Примерно писать нужно так:
Создаем TBitmap, указываем его размер (в данном случае RECT-канвы), рисуем что-то там, и говорим что бы канва формы съела память битмапы...

C++:
		Graphics::TBitmap *bitmap = new Graphics::TBitmap();
bitmap->Width = 400;
bitmap->Height= 400;
bitmap->Canvas->Rectangle(0,0,100,100);
Form1->Canvas->StretchDraw(Rect(0,0,400,400),bitmap);
Этот вариант уже 100ый :)
 
W

woka

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

DarkKnight

Я же говорю, тогда так сделай :
C++:
Form1->ControlStyle << csOpaque;
Form1->DoubleBuffered = true;
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!