请问有无办法优化下,实在太慢了var
i,j:integer;
beginimage2.Picture.Bitmap.Height:=image1.picture.width;
image2.Picture.Bitmap.Width:=image1.picture.height;
for i:=0 to image1.picture.Height do
for j:=0 to image1.picture.Width do
image2.canvas.Pixels[(-i+image1.picture.Height),j]:=image1.canvas.Pixels[j,i];

解决方案 »

  1.   

    用TBitMap对象在内存转了然后再一次显示出来试试
      

  2.   

    ImageEn 3.0.2下个第三控件吧
      

  3.   

    用ScanLine的代码,速度很快:procedure ImageRF(const Bitmap:TBitmap);
    var
    i,j:Integer;
    rowIn,rowOut:pRGBTriple;
    Bmp:TBitmap;
    Width,Height:Integer;
    begin
    Bmp:=TBitmap.Create;
    Bmp.Width := Bitmap.Height;
    Bmp.Height := Bitmap.Width;
    Width:=Bitmap.Width-1;
    Height:=Bitmap.Height-1;
    if Bitmap.PixelFormat<>pf32Bit then Bitmap.PixelFormat:=pf24Bit;
    Bmp.PixelFormat:=Bitmap.PixelFormat;
    for j := 0 to Height do
    begin
    rowIn := Bitmap.ScanLine[j];
    for i := 0 to Width do
    begin
    rowOut := Bmp.ScanLine[i];
    Inc(rowOut,Height - j);
    rowOut^ := rowIn^;
    Inc(rowIn);
    end;
    end;
    Bitmap.Assign(Bmp);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ImageRF(Image1.Picture.Bitmap);
    end;