Glen Morse
Glen Morse

Reputation: 2593

Change orientation of a shape

I would like to know if there is a way to change the orientation of a TShape thus instead of a square , i would like to rotate it to look like a diamond..

If not a way with TShape, how could this be done?

Upvotes: 2

Views: 831

Answers (2)

Remy Lebeau
Remy Lebeau

Reputation: 596387

A TShape itself cannot be rotated. But you can use a TPaintBox to draw your own graphics anyway you wish, it is just a matter of mathematically plotting the points to draw between. For example:

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;

Upvotes: 5

paulsm4
paulsm4

Reputation: 121669

A Delphi TShape is nothing more than drawing a bunch of vector graphics.

You can "rotate" the X/Y coordinates themselves with a 2-D transformation matrix. Computer Graphics 101:

Upvotes: 8

Related Questions