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

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем woka, 8 ноя 2010.

Статус темы:
Закрыта.
  1. woka

    woka Гость

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

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код (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);


    }
     
  3. woka

    woka Гость

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

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Просто как пример....
    А DoubleBuffered - за цикл конечно же... Случайно захватил его...
     
  5. woka

    woka Гость

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

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Рисуй в памяти просто и ничего дрыгатся не будет...
    Кидай свой код, покажу...
     
  7. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Вообще можно не перерисовывать контролы попробовать, должно помочь.. Не всегда но помогает...
    Вот так:

    Код (C++):
    Form1->ControlStyle << csOpaque;
    Form1->DoubleBuffered = true;
     
  8. etc

    etc Гость

    5!
     
  9. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Не, ну если так оно и есть ;-)))

    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ый :)
     
  10. woka

    woka Гость

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

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Я же говорю, тогда так сделай :
    Код (C++):
    Form1->ControlStyle << csOpaque;
    Form1->DoubleBuffered = true;
     
Загрузка...
Похожие Темы - Вопрос двойная буферизация
  1. Генералл
    Ответов:
    2
    Просмотров:
    58
  2. ApplePen
    Ответов:
    0
    Просмотров:
    60
  3. gURaBA_N
    Ответов:
    3
    Просмотров:
    92
  4. ghost
    Ответов:
    1
    Просмотров:
    87
  5. kartaman
    Ответов:
    0
    Просмотров:
    127
Статус темы:
Закрыта.

Поделиться этой страницей