次のコードは、Delphi 2007で期待どおりに動作します。画像リストからビットマップを取り出し、その上に赤いXを描画し、新しいビットマップを同じ画像リスト:デルファイ2010年ビットマップを描画するときのDelphi 2007と2010の違い
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);
は、同じコードを使用して、赤いXは、私は、Delphi 2010で期待通りに働い取得する/変更を追加する必要がありますどのような透明X.なり?ありがとう
私は2010年にこれを試しましたが、期待どおりに機能しました。 –
原因はビットマップ(当初はPNGリソースで、この描画段階の前にビットマップに変換されています)の変換のようです。どのように変換が起こっているのか分かりませんが、PNGの代わりにこのリソースをビットマップとして持つだけで解決しました。 – Mick