Вывод сохраненной графики
-----------------------------------------------------------------
Теперь, когда TStepWindow сохраняет свою текущую строку, вы должны научить его по команде (этой командой является Paint) ри- совать ее. Давайте напишем для TStepWindow метод Paint, который повторяет действия WMLButtonDown, WMMouseMove и WMLButtonUp. Пу- тем итерации по набору линий Paint воссоздает картинку аналогично тому, как это делаете вы. Метод Paint имеет следующий вид (см. файл STEP07.PAS):
procedure TStepWindow.Paint(PaintDC: HDC; var PaintInfo: TPintStruct);
procedure DrawLine(P: PLine); far; begin P^.Draw(PaintDC); end;
begin Drawing^.ForEach(@DrawLine); end;
Примечание: Итерация методов описывается в Главе 19 "Наборы".
Метод Draw объекта линии для изображения каждой линии между точками также использует итератор ForEach:
procedure TLine.Draw(ADC: HDC); var First: Boolean;
procedure DrawLine(P: PLinePoint); far; begin if First then MoveTo(ADC, P^.X, P^.Y) else LineTo(ADC, P^.X, P^.Y); First := False; end;
begin First := True; LinePen^.Select(ADC); Points^.ForEach(@DrawLine); LinePen^.Delete; end; ------------------------------------------------------------------------