使用具有抗锯齿功能的C#更改抗锯齿图像的背景颜色

Ric*_*ton 3 c# graphics antialiasing

我有一个图像,我需要更改背景颜色(例如,将下面的示例图像的背景更改为蓝色).

但是,图像是消除锯齿的,所以我不能简单地用不同的颜色替换背景颜色.

我试过的一种方法是创建第二个图像,它只是背景并改变它的颜色并将两个图像合并为一个,但是这不起作用,因为两个图像之间的边界是模糊的.

有没有办法做到这一点,或其他一些方法来实现这一点,我没有考虑?

示例图片

Lar*_*ech 8

只需使用GDI +

Image image = Image.FromFile("cloud.png");

Bitmap bmp = new Bitmap(image.Width, image.Height);
using (Graphics g = Graphics.FromImage(bmp)) {
  g.Clear(Color.SkyBlue);
  g.InterpolationMode = InterpolationMode.NearestNeighbor;
  g.PixelOffsetMode = PixelOffsetMode.None;
  g.DrawImage(image, Point.Empty);
}
Run Code Online (Sandbox Code Playgroud)

导致:

在此输入图像描述