Le code suivant fonctionne comme prévu avec Delphi 2007. Il prend un bitmap à partir d'une liste d'images, dessine un X rouge dessus et ajoute le nouveau bitmap à la fin du même liste d'images:Différence entre Delphi 2007 et 2010 lors du dessin sur des bitmaps
DynBmp:=Graphics.TBitMap.Create;
DynBmp.Transparent:=TRUE;
DynBmp.TransparentMode:=tmFixed;
ImgList.GetBitmap(9, DynBmp);
DynBmp.TransparentColor:=DynBmp.canvas.pixels[0, DynBmp.Height - 1];
DynBmp.Canvas.MoveTo(1, 1);
DynBmp.Canvas.Pen.Style:=psAlternate; //psSolid;
DynBmp.Canvas.Pen.Color:=clRed;
DynBmp.Canvas.Pen.Width:=2;
DynBmp.Canvas.LineTo(DynBmp.Width - 1, DynBmp.Height - 1);
DynBmp.Canvas.MoveTo(DynBmp.Width - 1, 1);
DynBmp.Canvas.LineTo(1, DynBmp.Height - 1);
FErrBmpIdx:=ImgList.AddMasked(DynBmp, DynBmp.TransParentColor);
aResetIcon.ImageIndex:=FErrBmpIdx;
FreeAndNil(DynBmp);
Sur Delphi 2010, en utilisant le même code, le X rouge devient transparent X. que dois-je ajouter/changer pour le faire fonctionner comme prévu avec Delphi 2010? Merci
J'ai essayé cela en 2010, et cela a fonctionné comme prévu. –
La cause semble être la conversion du bitmap (il s'agit à l'origine d'une ressource PNG, qui est convertie en bitmap avant cette phase de dessin). Je ne suis pas sûr de la cause de la conversion, mais nous l'avons corrigée simplement en ayant cette ressource sous forme de bitmap au lieu d'un fichier PNG. – Mick