Hola amigos, hace algunos dias le pregunte a algunos amigos como rotar un bitmap y pues no encontre respuestas.Buscando en Google encontre un codigo que me dio la idea de como lograrlo.
procedure TForm1.BitBtn1Click(Sender: TObject); procedure RotateBitmap(OrigBmp: TBitmap; Angle: real; DestBmp: TBitmap); var ang, sinang, cosang, xori, yori, xrot, yrot, dx, dy : extended; i, j : integer; tmpbmp : TBitmap; begin tmpbmp := TBitmap.Create; try tmpbmp.Width := OrigBmp.Width; tmpbmp.Height := OrigBmp.Height; tmpbmp.PixelFormat := OrigBmp.PixelFormat; ang := DegToRad(Angle); dx := (OrigBmp.Width-1) / 2; dy := (OrigBmp.Height-1) / 2; SinCos(ang, sinang, cosang); for i := 0 to tmpbmp.Height -1 do begin for j := 0 to tmpbmp.Width - 1 do begin xori := j - dx; yori := i - dy; xrot := (xori * cosang) - (yori * sinang); yrot := (xori * sinang) + (yori * cosang); xrot := xrot + dx; yrot := yrot + dy; tmpbmp.Canvas.Pixels[j, i] := OrigBmp.Canvas.Pixels[Round(xrot), Round(yrot)]; end; end; DestBmp.Assign(tmpbmp); finally tmpbmp.Free; end; end; begin RotateBitmap(Image1.Picture.Bitmap,-15,Image1.Picture.Bitmap); end;
Pues aqui esta y espero que les pueda ser de alguna ayuda.
En mi caso lo que queria era lograr que un avion pudiera hacer alguna inclinacion a ambos lados y algunos grados.Tambien se puede usar para graficos representativos en alguna funcion industrial.
Un Saludo.