6

System.Drawing.Image 型のオブジェクトがあり、特定の色 (黒など) を持つすべてのピクセルを透明にしたいと考えています (つまり、このピクセルのアルファを 0 に設定します)。

これを行う最善の方法は何ですか?

4

3 に答える 3

6

良いアプローチの 1 つは、ImageAttributesクラスを使用して、描画時に再マップする色のリストをセットアップすることです。これの利点は、優れたパフォーマンスと、リマッ​​プ カラーを非常に簡単に変更できることです。このコードのようなものを試してください...

ImageAttributes attribs = new ImageAttributes();
List<ColorMap> colorMaps = new List<ColorMap>();
//
// Remap black top be transparent
ColorMap remap = new ColorMap();
remap.OldColor = Color.Black;
remap.NewColor = Color.Transparent;
colorMaps.Add(remap);
//
// ...add additional remapping entries here...
//
attribs.SetRemapTable(colorMaps.ToArray(), ColorAdjustType.Bitmap);
context.Graphics.DrawImage(image, imageRect, 0, 0, 
                           imageRect.Width, imageRect.Height, 
                           GraphicsUnit.Pixel, attribs);
于 2008-10-02T12:42:41.033 に答える
3

Image から Bitmap を構築し、その Bitmap で MakeTransparent() を呼び出します。透明としてレンダリングする色を指定できます。

于 2008-10-02T12:34:30.443 に答える
2

それが画像であることだけを知っていますか?ビットマップの場合は、LockBits を呼び出し、すべてのピクセルをチェック/修正してから、ビットを再度ロック解除できます。

于 2008-10-02T12:29:00.457 に答える