Der folgende Code funktioniert wie erwartet mit Delphi 2007. Er nimmt ein Bitmap aus einer Bildliste, zeichnet ein rotes X darüber und fügt das neue Bitmap am Ende desselben hinzu Bildliste:Unterschied zwischen Delphi 2007 und 2010 beim Zeichnen auf 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);
auf Delphi 2010 mit dem gleichen Code, der rote X wird ein transparentes X. Was ich hinzufügen/ändern tun müssen, um es mit Delphi 2010 wie erwartet funktioniert? Danke
Ich habe dies auf 2010 versucht, und es hat wie erwartet funktioniert. –
Die Ursache scheint die Konvertierung der Bitmap zu sein (es ist ursprünglich eine PNG-Ressource, die vor dieser Zeichenstufe in eine Bitmap konvertiert wird). Ich bin nicht sicher, wie die Konvertierung es verursacht, aber wir haben es einfach dadurch behoben, dass wir diese Ressource als Bitmap anstelle von PNG haben. – Mick