본문 바로가기

파이어몽키

[FM2] XE3.FM2에서 Control을 Bitmap으로 내보내기 및 Bitmap.Pixels 사용하기

Firemonkey2로 버전업 된 후로 참 많은 것이 변했습니다.


TControl은 말할 것도 없고 TBitmap도 많은 내용이 변했네요.


Unit test에서 특정 Pixel의 색상을 얻어오고자 할때 기존 Bitmap.Pixels이 없어진 것을 확인 후 깜짝 놀랐습니다.


자... 그럼 제가 삽질로 얻어온 내용을 공유하도록 합니다.


| Control을 Bitmap(TImage)으로 내보내기

var
  Bitmap: TBitmap;
  Map: TBitmapData;
begin
  Bitmap :=  TBitmap.Create(Round(Panel1.Width), Round(Panel1.Height));
  try
    Bitmap.Canvas.BeginScene;

    // Bitmap으로 내보내기
    Bitmap.Assign(Panel1.MakeScreenshot);
 
    // Pixel의 값을 원하실 때는 이렇게
    Bitmap.Map(TMapAccess.maRead, Map);
    //AlphaColor := Map.GetPixel(Round(X), Round(Y));
    Bitmap.Unmap(Map);
    Bitmap.Canvas.EndScene;

    Image1.Bitmap.Assign(Bitmap);
  finally
    Bitmap.Free;
  end;
end;


Panel1의 화면을 Bitmap으로 내보내는 코드 입니다.

특정 좌표의 값은 Map.GetPixel로 얻어오실 수 있구요 반환은 TAlphaColor 입니다.


TBitmapData라는 구조체를 이용하는군요 구글링에도 없는 따끈한 정보입니다. 실은 많이 안찾아 봣습니다. -_-;