Перейти к содержанию
Fire Monkey от А до Я
  • 0

Рисовать без Repaint


ader

Вопрос

Опубликовано

Есть ли возможность рисовать в Paintbox напрямую, без вызова Repaint? Или есть ещё какой-то способ, чтобы выводить плавную анимацию графика поступающих данных? Сначала идёт отрисовка в буфер, а буфер на форму уже выводится в OnPaint через заданные промежутки времени (30-50мс). Картинка временами "залипает" - подозреваю, как раз из-за того, что сообщения на перерисовку, имея низкий приоритет, поступают неравномерно

Рекомендуемые сообщения

  • 0
Опубликовано


методы beginupdate endupdate   используются ?
если нет, то оно и будет тормозить и залипать ибо при каждом чихе идет перерисовка всей канвы.
 
 

  • 0
Опубликовано

beginupdate endupdate  для какого компонента? для  Paintbox?  и каким образом их использовать?

и зачем.. рисование вообще идёт не в основном потоке, в Paintbox только готовый битмап выводится. Оно не тормозит в общем-то, но как-то неравномерно идёт..

  • 0
Опубликовано

Да почти  для любого "графического" компонента   есть эти методы
 Откройте справку на Paintbox раздел методов - там есть описание обоих .
 Работаем на билдере так
 myPainbox->BeginUpdate();
//... тут код  чо мы там рисуем  - кривые . косые . графики окружности и прочие мегауравнения
myPainbox->EndUpdate();
myPainbox->Repaint();// выводим на экран все что накалякали в буфере

Оно и будет идти неравномерно ибо  вашему приложению система не обязана давать 100% процессорного времени :)

  • 0
Опубликовано

странные советы..  зачем myPainbox->BeginUpdate() , если я рисую не на Paintbox? и вообще рисую в фоне на невизуальном битмапе. В том-то и вопрос, что доступ к канве Painbox-а только через Repaint

 

  • 0
Опубликовано

Накидайте просто пример - рисование линии  в одну сторону и в другую по таймеру - ничего никуда не залипает  и не зависает.

Repaint    по таймеру вызывается ? 
Вы бы код приложили ...

 

  • 0
Опубликовано

в простом примере будет рисовать более-менее плавно. В реальной программе на форме много ещё чего другого рисуется, кроме графика, которому нужна плавность. В VCL проблемы не было - просто выводишь напрямую на канву Paintbox-а, минуя очередь сообщений. Вопрос вполне конкретный: как это сделать в Firemonkey?

  • 0
  • Модераторы
Опубликовано

В фмх канвас является общим для формы, а в вцл для каждого компонента свой.

рисовать нужно в методе онпайнт компонента или формы

  • 0
Опубликовано
20 минут назад, wamaco сказал:

а в чем печаль?

вы не чувствуете разницы между "нарисовать немедленно" и "отправить запрос на отрисовку"?

  • 0
Опубликовано
1 час назад, ader сказал:

вы не чувствуете разницы между "нарисовать немедленно" и "отправить запрос на отрисовку"?

А с чего ты взял что контролируешь операционку? Она живёт своей жизнью и поплёвывает на самоуверенных кодеров )

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...