Вращение изображения

С помощью предлагаемого программного кода реализуется быстрый и примитивный способ вращения изображения. По крайней мере, это тоже выход из положения, поскольку Windows этого делать не умеет.

procedure RotateRight(BitMap: TImage);
var
  FirstC, LastC, c, r: integer;

  procedure FixPixels(c, r: integer);
  var
    SavePix, SavePix2: tColor;
    i, NewC, NewR: integer;
  begin
    SavePix := Bitmap.Canvas.Pixels[c, r];
    for i := 1 to 4 do begin
      Newc := BitMap.Height - r + 1;
      Newr := c;
      SavePix2 := BitMap.Canvas.Pixels[Newc, Newr];
      Bitmap.Canvas.Pixels[Newc, Newr] := SavePix;
      SavePix := SavePix2;
      c := NewC;
      r := NewR;
    end;
  end;

begin
  if BitMap.Width <> BitMap.Height then exit;
  BitMap.Visible := False;
  with Bitmap.Canvas do begin
    FirstС := 0;
    LastС := BitMap.Width;
    for r := 0 to BitMap.Height div 2 do begin
      for c := FirstС to LastС do FixPixels(c, r);
      Inc(FirstC);
      Dec(LastC);
    end;
  end;
  BitMap.Visible := True;
end;
[News Group]

Примечание
Вращение происходит на 90 градусов вправо за одно выполнение процедуры. Не забудьте добавить компонент TImage на форму, загрузить изображение и передать TImage в качестве параметра в процедуру вращения.