免责声明:此代码非常糟糕,不应在生产中使用。它正在测试概念验证。
我想使用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();
答案 0 :(得分:0)
您可能会发现我曾撰写的这篇博文有用:Soft Edged Images in GDI+。这将向您展示您需要了解的很多内容。为了在任意形状上创建平滑边缘,您还需要一个平滑滤镜(您需要将其应用于Alpha通道),您可以阅读here。