我在A3打印机画布上绘图。

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

谢谢!

最佳答案

就像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;

关于delphi - 如何在D-7中绘制 Canvas 的旋转部分?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6910496/

10-10 13:35