2012-07-22 16 views
6

मैं TImageList से TImage पर एक तस्वीर (32 बिट-गहराई, पारदर्शी) लोड करना चाहता हूं। मानक दृष्टिकोण ImageList.GetBitmap(Index, Image.Picture.Bitmap); होगा। हालांकि GetBitmap विधि पारदर्शिता के साथ काम नहीं करती है, इसलिए मुझे हमेशा एक गैर-पारदर्शी बिटमैप मिलता है।छविसूची से पारदर्शी छवि कैसे लोड करें?

+1

की तरह [ 'RRUZ suggested'] (http://stackoverflow.com/questions/10972986/png-image-from-imagelist#comment14330479_10973026) कुछ समय पहले ... – TLama

उत्तर

23

कामकाज अपेक्षाकृत सरल है - ImageList एक और तरीका प्रदान करता है, GetIcon, जो पारदर्शिता के साथ ठीक काम करता है। कोड को लोड करने के लिए एक पारदर्शी छवि होगा:

ImageList.GetIcon(Index, Image.Picture.Icon); 

और भूल नहीं है उचित ImageList गुण सेट करने के लिए:

ImageList.ColorDepth:=cd32bit; 
ImageList.DrawingStyle:=dsTransparent; 
2

मैं भी एक tImageList से छवियों में गुजर के साथ विभिन्न मुद्दों पड़ा है। तो मेरे पास एक साधारण रैपर दिनचर्या है जो आमतौर पर नौकरी करता है और यह पारदर्शिता को लागू करता है। नीचे दिया गया कोड डेल्फी 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) 
संबंधित मुद्दे