Вы можете нарисовать повторяющуюся часть во временное растровое изображение и нарисовать это растровое изображение дважды на холсте принтера, после поворота.Поворот можно выполнить, например, с помощью PlgBlt :
procedure RotateBitmap180(Source, Dest: TBitmap);
var
Points: array[0..2] of TPoint;
begin
if (Source <> nil) and (Dest <> nil) then
with Source, Canvas do
begin
Dest.Width := Width;
Dest.Height := Height;
Points[0].X := Width - 1;
Points[0].Y := Height - 1;
Points[1].X := -1;
Points[1].Y := Height - 1;
Points[2].X := Width - 1;
Points[2].Y := -1;
PlgBlt(Dest.Canvas.Handle, Points, Handle, 0, 0, Width, Height, 0, 0, 0);
Dest.Modified := True;
end;
end;
Примечание: существуют более эффективные процедуры поворота, поскольку PlgBlt не только вращает, но и масштабирует.Но этот короткий делает работу.