@zairkz
На работу FM вообще и, в частности, на работу 2D, очень интересно смотреть с позиций сравнения с WPF Microsoft и JavaFX Oracle. В первой у меня, не скрою, большой опыт. Но и со второй было общение. Существует 2 клиентских модели рисования: умная (по необходимости обновления экрана) и игровая в вечно бегущем OnPaint (OnDraw, ...). Далее, если я ошибусь, то меня поправит, надеюсь, Ярослав.
FM использует умную модель (как WPF и JavaFX) с тем, чтобы не нагружать процессор. Ну, в самом деле, клиентское приложение не игрушка и в FM team знают, когда надо перерисовать графику. В особых экстраординарных случаях есть спец. методы принудительной кастомной прорисовки. Но уж не знаю как в OP работал OnPaint раньше (я неделю назад влюбился в OP окончательно и бесповоротно), но возможность рисовать в OnPaint оставлена. Причем, вызов OnPaint работает по "умной" схеме (по необходимости) и второе, тяжелые компоненты (контролы по факту) не создаются, а вместо этого идет указание DirectX или OpenGL набросить легенький примитив, не отягощенный никакими атрибутами UI контрола и пр. Иначе, FM team оставила все возможности. Хочешь ловить события кликов по линии - пожалуйста, контрол TLine. Хочешь рисовать что-то в псевдоигровом стиле - Canvas.Draw...
В WPF также широко представлена объектная (UI компонентная) модель для рисования умных контролов типа линий, эллипсов и пр. Однако отсутствует такой вот изящный псевдоигровой OnPaint. А что же со свойствами графики, рисуемой TCanvas. Они работают так, как это было принято всюду ранее - графический контекст. Чуть выше канвас получает атрибуты пера, далее рисует что-то, далее опять можно изменить эти свойства и нарисовать что-то другое.
В общем, все очень красиво и элегантно. Когда познакомлюсь поближе, можно что-то и обзорное написать на эту тему.