H
hwljerry
Unregistered / Unconfirmed
GUEST, unregistred user!
各位大哥,帮我把下面的反向旋转改成正向旋转。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
TempBmp:TBitmap;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure RotateBMP(BMP,TempBmp:TBitmap);
var
i,j,W:Integer;
ScOrg,ScDest:Array of PIntegerArray;
begin
TempBmp.Assign(BMP);
W:=BMP.Width;
BMP.Width:=BMP.Height;
BMP.Height:=W;
Dec(W);
SetLength(ScDest,BMP.Height);
SetLength(ScOrg,TempBmp.Height);
for i:=0 to BMP.Height-1 do ScDest:=BMP.ScanLine;
for i:=0 to TempBmp.Height-1 do ScOrg:=TempBmp.ScanLine;
for i:=0 to BMP.Height-1 do
for j:=0 to BMP.Width-1 do
ScDest[W-i][j]:=ScOrg[j];
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RotateBMP(Image1.Picture.Bitmap,TempBmp);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Picture.Bitmap.PixelFormat:=pf32bit;
TempBmp:=TBitmap.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
TempBmp.Free;
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
TempBmp:TBitmap;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure RotateBMP(BMP,TempBmp:TBitmap);
var
i,j,W:Integer;
ScOrg,ScDest:Array of PIntegerArray;
begin
TempBmp.Assign(BMP);
W:=BMP.Width;
BMP.Width:=BMP.Height;
BMP.Height:=W;
Dec(W);
SetLength(ScDest,BMP.Height);
SetLength(ScOrg,TempBmp.Height);
for i:=0 to BMP.Height-1 do ScDest:=BMP.ScanLine;
for i:=0 to TempBmp.Height-1 do ScOrg:=TempBmp.ScanLine;
for i:=0 to BMP.Height-1 do
for j:=0 to BMP.Width-1 do
ScDest[W-i][j]:=ScOrg[j];
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RotateBMP(Image1.Picture.Bitmap,TempBmp);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Picture.Bitmap.PixelFormat:=pf32bit;
TempBmp:=TBitmap.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
TempBmp.Free;
end;
end.