TImageList
에서 TImage
으로 그림 (32 비트 깊이, 투명)을로드하려고합니다. 표준 방식은 ImageList.GetBitmap(Index, Image.Picture.Bitmap);
입니다. 그러나 GetBitmap
메서드는 투명도와 함께 작동하지 않으므로 항상 투명하지 않은 비트 맵을 얻습니다.ImageList에서 투명한 이미지를로드하는 방법은 무엇입니까?
6
A
답변
23
해결 방법은 매우 간단합니다. ImageList는 다른 방법 인 GetIcon
을 제공합니다.이 방법은 투명하게 작동합니다.
ImageList.GetIcon(Index, Image.Picture.Icon);
을 그리고 적절한의 ImageList 속성을 설정하는 것을 잊지 마세요 : 코드는 투명한 이미지가 될 것로드
나도는 A TImageList의에서 이미지 전달과 함께 다양한 문제를 가지고있다ImageList.ColorDepth:=cd32bit;
ImageList.DrawingStyle:=dsTransparent;
2
. 그래서 나는 일반적으로 작업을 수행하고 투명성을 강화하는 간단한 래퍼 루틴을가집니다. 아래의 코드는 Delphi 2005이고 imlActiveView는 버튼 그림 문자 이미지가있는 tImageList 구성 요소입니다. 여기
procedure TfrmForm.LoadBitmap (Number : integer; bmp : tBitMap);
var
ActiveBitmap : TBitMap;
begin
ActiveBitmap := TBitMap.Create;
try
imlActiveView.GetBitmap (Number, ActiveBitmap);
bmp.Transparent := true;
bmp.Height := ActiveBitmap.Height;
bmp.Width := ActiveBitmap.Width;
bmp.Canvas.Draw (0, 0, ActiveBitmap);
finally
ActiveBitmap.Free;
end
end;
는 5 imlActiveView 화상이 btnNavigate.Glyph로 전달되는 사용의 일례이다.
LoadBitmap (5, btnNavigate.Glyph)
처럼 ['RRUZ suggested'] (http://stackoverflow.com/questions/10972986/png-image-from-imagelist#comment14330479_10973026) 몇 시간 전에 ... – TLama