c# - 使具有特定颜色的图像的每个像素透明

标签 c# .net image transparency

我有一个 System.Drawing.Image 类型的对象,并希望使每个具有特定颜色(例如黑色)的像素透明(也就是说,将此像素的 alpha 设置为 0)。

执行此操作的最佳方法是什么?

最佳答案

一个好的方法是使用 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);

关于c# - 使具有特定颜色的图像的每个像素透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/162007/

相关文章:

html - 图片背景色

c# - 处理属性设置/获取中的异常

c# - 在 C# 中,如何将本地文件的 datemodified 属性与 Amazon S3 文件进行比较?

c# - 使用 DialogResult c# 启动进程

c# - 将 Latin 1 编码的 UTF8 转换为 Unicode

c# - NHibernate 可以在不使用批处理或 Criteria API 的情况下解决 N+1 的订单-> 客户关系吗?

c# - 我的第一个 .net 网络应用程序——我应该直接使用 MVC 框架吗(c.f. ASP.net)

.net - Kafka (.NET) 中的消息头

c++ - Apache Kafka 可以与 C++ 一起使用吗?

未加载使用NGEN创建的.NET native 镜像