2017-09-25 16 views
3

이미지의 크기와 종횡비에 관계없이 64 * 64의 미리 정의 된 비트 맵으로 이미지의 크기를 조정하고 싶습니다. 나는 Bitmap.ReSize을 시도했지만 가로 세로 비율을 유지합니다. 나는 TImage을 시도하고 WrapModeiwStretch으로 설정했습니다. 그건 내가 원하는대로 실제로 이미지를 재조정한다는 점에서 어느 정도까지는 작동하지만, TImage에서 그 이미지를 얻을 수있는 방법을 찾을 수 없습니다. TImageBitmap 속성에는 원래 비트 맵이 여전히 포함되어 있습니다.Firemonkey에서 이미지를 늘리는 방법은 무엇입니까?

누군가가 화면에 표시된대로 TImage에서 이미지를 가져 오는 방법을 알고 있습니까? 또는 더 나은 점 : 크기 조절 및 스트레칭과 같은 기능을하는 지점을 알려주십시오. 거기 있다면, 나는 그것을 놓쳤다.

감사합니다.

답변

4

Fmx에서 이미지를 늘리려면 TImage을 사용할 필요가 없습니다. 난 당신이 정말 TImage를 사용하지 않으 이해하고, 다음과 같이 솔루션입니다 :

var 
    bmpA, bmpB: TBitmap; 
    src, trg: TRectF; 
begin 
    bmpA := nil; 
    bmpB := nil; 
    try 
    bmpA := TBitmap.Create; 
    bmpA.LoadFromFile('C:\tmp\Imgs\149265645.jpg'); 

    bmpB:= TBitmap.Create; 
    bmpB.SetSize(64, 64); 

    src := RectF(0, 0, bmpA.Width, bmpA.Height); 
    trg := RectF(0, 0, 64, 64); 

    bmpB.Canvas.BeginScene; 
    bmpB.Canvas.DrawBitmap(bmpA, src, trg, 1); 
    bmpB.Canvas.EndScene; 

    bmpB.SaveToFile('C:\tmp\Imgs\149265645_take_two.bmp'); 
    finally 
    bmpA.Free; 
    bmpB.Free; 
    end; 
end; 

당신은하자 bmpB.CanvasbmpA 비트 맵을 그리고 srctrg 사각형을 따라 동시에 이미지 크기를 조정.

+0

예! 이 작동합니다. TImage에 대한 귀하의 가정은 정확하고 솔루션은 청결한 것입니다.이 문제를 해결하는 과정에서 귀하가 언급 한 문제가 발생했다고 생각할 수도 있습니다. 이 솔루션을 채택함으로써 그 문제는 더 이상 관련이 없지만 여전히 그 오류를 야기 할 수있는 일을 저에게 당황시킵니다. 어쨌든, 고맙습니다. – Arnold