在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
向ImageList中动态加入Png图片有些失真,经过多方查询,发现需要将Bitmap的AlphaFormat指定一下。 下面代码支持多层Png导入到ImageList。 //向ImageList中加入png类型的资源图片
procedure AddPngToImageList(AImageList: TImagelist; AResName: string); var LResStream: TStream; LPng: TPngImage; LBitMap, LRowBitMap: TBitmap; LRect, LRowRect: TRect; begin //AImageList.DrawingStyle := dsTransparent; AImageList.ColorDepth := cd32Bit; LResStream := TResourceStream.Create(uResourcesImpl.GetResHandle, AResName, RT_RCDATA); LPng := TPngImage.Create; LBitMap := TBitmap.Create; try LPng.LoadFromStream(LResStream); LBitMap.Assign(LPng); LBitMap.AlphaFormat := afIgnored; if LBitMap.Height > AImageList.Height then begin LRowBitMap := TBitmap.Create; try LRowBitMap.Width := LBitMap.Width; LRowBitMap.Height := AImageList.Height; LRect := Rect(0, 0, LBitMap.Width, LRowBitMap.Height); LRowRect := Rect(0, 0, LRowBitMap.Width, LRowBitMap.Height); while LRect.Bottom <= LBitMap.Height do begin LRowBitMap.Canvas.CopyRect(LRowRect, LBitMap.Canvas, LRect); OffsetRect(LRect, 0, LRowBitMap.Height); AImageList.Add(LRowBitMap, nil); end; finally LRowBitMap.Free; end; end else AImageList.Add(LBitMap, nil); finally LResStream.Free; LPng.Free; LBitMap.Free; end; end;
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论