0
私は、アルファ透明度を持つイメージの色を別の(より小さな色の)色に動的にマッピングしています。ImageAttributes.SetRemapTableを使用した多数のColorMapでのパフォーマンスの問題
私はのようなコードを持っている:
var mappings = new List<ColorMap>();
foreach(var color in mapcolours)
{
// Add mappings for all alpha values of the mask colour
for(int i = 0; i < 256; i++)
{
var cm = new ColorMap();
cm.OldColor = Color.FromArgb(i, mapcolour);
cm.NewColor = Color.FromArgb(i, GetDestinationColour(mapcolour));
mappings.Add(cm);
}
}
var ia = new ImageAttributes();
ia.SetRemapTable(mappings.ToArray(), ColorAdjustType.Bitmap);
g.DrawImage(image_mask, destrect, 0, 0, image_mask.Width, image_mask.Height, GraphicsUnit.Pixel, ia);
しかし残念ながら(と私はその私が、各色のすべて255個のアルファ値をマッピングしていますので、思う)これは中にまで示してきたCPUの多くを食べますいくつかのプロファイリング。
もっと効率的な方法がありますか?私はすべての255のアルファ値をマッピングするのを止めることができません。さもなければ結果はひどく見えます。
gdiマッピングより高速であるかどうかはわかりません。テストする必要があります。 – arbiter