C#图像边缘羽化

C#图像边缘羽化,c#,gdi+,image-manipulation,C#,Gdi+,Image Manipulation,免责声明:此代码非常糟糕,不应在生产中使用。它正在测试概念验证。 我想用C#创建一个如下所示的图像,关键点是整个图像的羽化边缘和透明度 这是我到目前为止的结果 正如你所看到的,边缘是羽状的。我的问题是,是否有人知道如何使用纯C#来增强优势并保持透明度,目前我正在使用一个第三方库,其中包含一些看起来相当糟糕的代码 如果有更好的方法来完成这个句号,我会很感兴趣的 下面是我一直在使用的一些代码 Bitmap bitmap = new Bitmap(width, height); Graphics

免责声明:此代码非常糟糕,不应在生产中使用。它正在测试概念验证。

我想用C#创建一个如下所示的图像,关键点是整个图像的羽化边缘和透明度

这是我到目前为止的结果

正如你所看到的,边缘是羽状的。我的问题是,是否有人知道如何使用纯C#来增强优势并保持透明度,目前我正在使用一个第三方库,其中包含一些看起来相当糟糕的代码

如果有更好的方法来完成这个句号,我会很感兴趣的

下面是我一直在使用的一些代码

Bitmap bitmap = new Bitmap(width, height);
Graphics graphics = Graphics.FromImage(bitmap);
// Transparent Background
SolidBrush semiTransparentPen = new SolidBrush(Color.FromArgb(60, 31, 31, 31));
graphics.FillRectangle(semiTransparentPen, 0f, 0f, bitmap.Width, bitmap.Height);

// Feather edges
Bitmap bitmap1 = new Bitmap(bitmap);
Bitmap bitmap2 = new Bitmap(bitmap);

fipbmp.makeEdgesTransparentHorzSigma(bitmap1, 4, 4);
fipbmp.makeEdgesTransparentVertSigma(bitmap2, 4, 4);
fipbmp.MergeBmp(bitmap, bitmap1, bitmap2);

MemoryStream memoryStream = new MemoryStream();
bitmap.Save(memoryStream, ImageFormat.Png);

byte[] buffer = memoryStream.ToArray();

你可能会发现我曾经写过的这篇博文很有用:。这将向你展示很多你需要知道的东西。为了在任意形状上创建平滑边,您还需要一个平滑过滤器(然后需要将其应用于alpha通道),您可以阅读该过滤器。

只是一个问题,是否有使用GDI+的项目要求?不,更感兴趣的是性能和效率