Delphi 更改形状的方向

Delphi 更改形状的方向,delphi,vcl,Delphi,Vcl,我想知道是否有一种方法可以改变T形的方向,因此我想旋转它,使其看起来像钻石 如果不是TShape的一种方式,怎么能做到呢 Delphi T图形只不过是绘制一组矢量图形 可以使用二维变换矩阵“旋转”X/Y坐标本身。计算机图形学101: 形状本身不能旋转。但是,您可以使用TPaintBox绘制自己的图形,只要用数学方法绘制要绘制的点即可。例如: procedure TForm1.PaintBox1Paint(Sender: TObject); var Points: array[0..3]

我想知道是否有一种方法可以改变T形的方向,因此我想旋转它,使其看起来像钻石


如果不是TShape的一种方式,怎么能做到呢

Delphi T图形只不过是绘制一组矢量图形

可以使用二维变换矩阵“旋转”X/Y坐标本身。计算机图形学101:


形状本身不能旋转。但是,您可以使用TPaintBox绘制自己的图形,只要用数学方法绘制要绘制的点即可。例如:

procedure TForm1.PaintBox1Paint(Sender: TObject);
var
  Points: array[0..3] of TPoint;
  W, H: Integer;
begin
  W := PaintBox1.Width;
  H := PaintBox1.Height;

  Points[0].X := W div 2;
  Points[0].Y := 0;

  Points[1].X := W;
  Points[1].Y := H div 2;

  Points[2].X := Points[0].X;
  Points[2].Y := H;

  Points[3].X := 0;
  Points[3].Y := Points[1].Y;

  PaintBox1.Canvas.Brush.Color := clBtnFace;
  PaintBox1.Canvas.FillRect(Rect(0, 0, W, H));

  PaintBox1.Canvas.Brush.Color := clBlue;
  PaintBox1.Canvas.Pen.Color := clBlack;
  PaintBox1.Canvas.Pen.Width := 1;
  PaintBox1.Canvas.Polygon(Points);
end;

vcl还不是firemonkey的忠实粉丝,仍然有太多的问题可能你还应该包括你使用的Delphi版本。Remy的答案是自Delphi 1.+1以来最实用、最有效的答案;很好的二维变换参考资料。第二个非常直观。