画像を回転させる(90、180、270℃回転)


ここではImage1に格納されたBMPを90、180、270℃回転させます。
今回は手続きにまとめました。



■必要なコンポーネント

■使用するAPI関数


■その他 

■ソースは下記のようになります。

Private部
private
{ Private 宣言 }
procedure Kaiten(Image : TImage ; Dosu :Integer );
 

■画像を回転させる手続き
//--------------------------------------------
//■手続き名 Kaiten
//■概要   画像を回転させる
//■引数  
//   Image 画像を回転させたいTImage
//   Dosu  回転角度(90,180,270℃のみ)
//--------------------------------------------

procedure TForm1.Kaiten(Image : TImage ; Dosu :Integer );
Var
X,Y : Integer;
RGBColor : Integer;
Bmp : TBitmap;
begin

  BMP :=TBitmap.Create;

  Case Dosu of

   90,270:begin
        Bmp.Width := Image.Height ;
        Bmp.Height:= Image.Width;
       end;
   180 : begin
        Bmp.Width := Image.Width ;
        Bmp.Height:= Image.Height;
       end;
  end;

 for Y := 0 To Image.Height-1 do
 begin
  for X := 0 To Image.Width-1 do
  begin
   //指定された座標のピクセルのRGB (赤、 緑、 青) カラー値を取得します。
   RGBColor := GetPixel(Image.Canvas.handle, X, Y) ;
   //タネを植え付ける
   Case Dosu of
     90 : SetPixel(Bmp.Canvas.Handle, Image.Height - 1-Y, X, RGBColor) ;
     180: SetPixel(Bmp.Canvas.Handle, Image.Width - 1 - X, Image.Height - 1 - Y, RGBColor);
     270: SetPixel(Bmp.Canvas.Handle, Y, Image.Width - 1 - X, RGBColor);
   end;

 end;
 end;

 Image.Picture.Bitmap.Assign(BMP);
 BMP.Free;

end;

90℃回転
procedure TForm1.Button1Click(Sender: TObject);
begin
 Kaiten(Image1,90);
end;

180℃回転
procedure TForm1.Button2Click(Sender: TObject);
begin
 Kaiten(Image1,180);
end;

270℃回転
procedure TForm1.Button3lick(Sender: TObject);
begin
 Kaiten(Image1,270);
end;





Win32APIのページへ



ホーム PV ランキング