본문 바로가기

Delphi/꿀팁

이미지 반투명화 하기

uses

  Windows, Vcl.Graphics, Vcl.Imaging.pngimage;

procedure SetAlphaBlend(var img: TPngImage; const Alpha: Byte);

var

  mScanline, mPixel: Integer;

  mScanArray: pByteArray;

begin

  try

    img.CreateAlpha;


    for mScanline := 0 to img.Height - 1 do

    begin

      mScanArray := img.AlphaScanline[mScanline];


      for mPixel := 0 to img.Width - 1 do

      begin

        mScanArray[mPixel] := Alpha;

      end;

    end;

  except

    Exit;

  end;

end;

procedure ChangeImage;

var

  srcImage : TImage;

  tmpBit : TBitmap;

  tmpPng : TPngImage;

begin

  srcImage := TImage.Create(Self);

  srcImage.Picture.LoadFromFile('C:\Test.jpg');

  tmpBit := TBitmap.Create;

  tmpPng := TPngImage.Create;


  try

    tmpBit.SetSize(srcImage.Width, srcImage.Height);


    if BitBlt(tmpBit.Canvas.Handle, 0, 0,

             srcImage.Width,

             srcImage.Height,

             srcImage.Picture.Bitmap.Canvas.Handle, 0, 0,

             SRCCOPY) then

    begin

      tmpPng.Assign(tmpBit);


      SetAlphaBlend(tmpPng, 100); //투명도를 조절합니다.

      srcImage.Picture.Bitmap.Assign(tmpPng);

      srcmage.Refresh;

    end;

  finally

    tmpBit.Free;

    tmpPng.Free;

  end;

end;


반응형