我想知道是否有办法改变TShape的方向而不是方形,我想将它旋转成看起来像钻石..
如果不是TShape的方式,怎么办呢?
答案 0 :(得分:8)
Delphi TShape只不过是绘制了一堆矢量图形。
您可以使用二维变换矩阵“旋转”X / Y坐标本身。计算机图形学101:
答案 1 :(得分:5)
TShape本身无法旋转。但是你可以使用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;