728x90
uses FMX.MultiresBitmap;
type
TImageListHelper = class helper for TImageList
function Add(aBitmap: TBitmap): integer;
end;
function TImageListHelper.Add(aBitmap: TBitmap): integer;
const
SCALE = 1;
var
vSource: TCustomSourceItem;
vBitmapItem: TCustomBitmapItem;
vDest: TCustomDestinationItem;
vLayer: TLayer;
begin
Result := -1;
if (aBitmap.Width = 0) or (aBitmap.Height = 0) then exit;
// 여기서 비트맵 소스 추가
vSource := Source.Add;
vSource.MultiResBitmap.TransparentColor := TColorRec.Fuchsia;
vSource.MultiResBitmap.SizeKind := TSizeKind.Source;
vSource.MultiResBitmap.Width := Round(aBitmap.Width / SCALE);
vSource.MultiResBitmap.Height := Round(aBitmap.Height / SCALE);
vBitmapItem := vSource.MultiResBitmap.ItemByScale(SCALE, True, True);
if vBitmapItem = nil then
begin
vBitmapItem := vSource.MultiResBitmap.Add;
vBitmapItem.Scale := Scale;
end;
vBitmapItem.Bitmap.Assign(aBitmap);
vDest := Destination.Add;
vLayer := vDest.Layers.Add;
vLayer.SourceRect.Rect := TRectF.Create(TPoint.Zero, vSource.MultiResBitmap.Width,
vSource.MultiResBitmap.Height);
vLayer.Name := vSource.Name;
Result := vDest.Index;
end;
↑↑↑↑↑↑↑ 위의 코드를 추가한후
간단하게 예로 TImageList의 컴포넌트가 자연스레 Add가 추가되어 나옵니다
procedure Test;
begin
var IMGBit := TBitmap.Create;
IMGBit.LoadFromStream(IMGStream);
Form1.ImageList1.Add(IMGBit);
end;
ImageList1의 두번 갖고 오게 되면 데이터가 쌓여서 메모리가 누적이 됩니다 고로
아래 처럼 Add 만나기전에 Clear로 정리 해주면 좋습니다
Form1.ImageList1.Source.Clear;
Form1.ImageList1.Destination.Clear;
728x90
'FireMonkey 예제 자료' 카테고리의 다른 글
파이어몽키 java to pas 및 자바 시그니처 주소 참고용 (0) | 2022.01.18 |
---|---|
FireMonkey java class patch and jar patch 패치 하기 (0) | 2022.01.14 |
java 최근에 실행된 앱 보기에서 앱 지울시 종료하기 (0) | 2022.01.09 |
FireMonkey Floating(플로팅) 안드로이드 가사 위젯 jar 파일 업로드 (0) | 2022.01.08 |
Floating KMS 가사 위젯 java 코드 정리 해드렸습니다 (0) | 2022.01.05 |
java 코드에 리소스 id 얻어오기 (0) | 2022.01.03 |
(영상강의)파이어몽키 Live2D 변환작업 하는방법 (0) | 2022.01.03 |
안드로이드 파이어몽키 지정된폴더에 파일목록 불러오기 (0) | 2021.12.13 |
댓글