画像を拡大縮小する

ここではImage1に格納されたBMPを1/2倍、2倍、5倍にします。
今回は手続きにまとめました。



■必要なコンポーネント

■使用するAPI関数

■その他 

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

Private部
private
{ Private 宣言 }
Procedure StretchImage(Image : TImage; Dosu: Double);
 

画像を拡大縮小する手続き
//----------------------------------------------
//■手続き名 StretchImage
//■概要  画像拡大縮小
//■引数
// Image 画像を拡大縮小するTimage
// Dosu  画像拡大縮小率(0.01〜1000倍ぐらいまで?)
//----------------------------------------------


Procedure TForm1. StretchImage(Image : TImage; Dosu: Double);
var
TempBmp : Tbitmap;
BMPWidth,BMPHeight : integer;
begin

  BMPWidth :=Trunc(Image.Width * Dosu);
  BMPHeight :=Trunc(Image.Height* Dosu);

  TempBmp :=TBitmap.Create;
  TempBMP.Width := BMPWidth ;
  TempBMP.Height := BMPHeight ;
  //画像を拡大又は縮小して転送 
  StretchBlt(TempBmp.Canvas.Handle,0,0,Tempbmp.Width,TempBmp.Height,
           Image.Canvas.Handle,0, 0,Image.Width, Image.Height, SRCCOPY);

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

end;

画像を1/2にする
procedure TForm1.Button1Click(Sender: TObject);
begin
 StretchImage(Image1,0.5);
end;

画像を2倍にする
procedure TForm1.Button2Click(Sender: TObject);
begin
 StretchImage(Image1,2);
end;

画像を5倍にする
procedure TForm1.Button3lick(Sender: TObject);
begin
 StretchImage(Image1,5);
end;





Win32APIのページへ



ホーム PV ランキング