如何在D-7中绘制旋转的画布部分?

Joh*_*ohn 1 delphi delphi-7

我正在A3打印机画布上画画.

是否可以复制画布的一部分并在画布的另一部分中绘制旋转(180度)?

谢谢!

NGL*_*GLN 7

像Sertac已经评论过的那样,使用SetWorldTransform:

procedure TForm1.Button1Click(Sender: TObject);
var
  XForm: TXForm;
begin
  if PrintDialog1.Execute then
    with Printer do
    begin
      BeginDoc;
      SetGraphicsMode(Canvas.Handle, GM_ADVANCED);
      PrintTo(Canvas);
      XForm.eM11 := Cos(DegToRad(180));
      XForm.eM12 := Sin(DegToRad(180));
      XForm.eM21 := -Sin(DegToRad(180));
      XForm.eM22 := Cos(DegToRad(180));
      XForm.eDx := PageWidth;
      XForm.eDy := PageHeight;
      SetWorldTransform(Canvas.Handle, XForm);
      PrintTo(Canvas);
      EndDoc;
    end;
end;

procedure TForm1.PrintTo(ACanvas: TCanvas);
begin
  with ACanvas do
  begin
    Font.Size := 180;
    TextOut(0, 0, 'Test text');
    Pen.Width := 40;
    MoveTo(0, 0);
    LineTo(3000, 3000);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述