Как правильно рисовать (без GraphABC)?

Сначала расскажу, что я делаю сейчас, при том, что есть ощущение, что делаю это криво. Для рисования использую компонент: PictureBox. Можно, конечно, рисовать на чем угодно, но только внутри метода Paint. От PictureBox мне требуется объект для рисования, который можно получить:

graph := pictureBox1.CreateGraphics;

потом использую его для рисования в других местах, кроме Paint.

Что хотелось бы в идеале:

  1. Рисовать не сразу на экране, а на некотором внутреннем буфере, содержимое которого потом может быть моментально отображено в нужный момент.
  2. Изображение должно сохраняться и восстанавливаться после сворачивания или перекрытия окна. При этом алгоритм отрисовки, может быть достаточно сложен и длителен, он не должен повторяться в методе Paint, должно сохраняться само полученное изображение.

Подскажите, какие компоненты надо использовать, и как это правильно реализовать?

Я не совсем понял, что нужно, но можно посмотреть на двойную буферизацию графики на MSDN и ссылки там же.

Да, наверное это называется “двойной буферизацией”. Об этом и вопрос: как её правильно реализовать на PascalABC ?

Посмотрите исходники GraphABC.pas, в классе Picture используется двойная буферизация