C # Image Edge Feathering - PullRequest
       35

C # Image Edge Feathering

0 голосов
/ 30 октября 2010

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Этот код ужасен и не должен использоваться в производстве.Это проверка концепции.

Я хочу создать изображение, как показано ниже, используя C #, ключевые точки - это заштрихованные края и прозрачность всего изображения.

alt text

Вот мой результат на данный момент

alt text

Как видите, края закрашены.У меня вопрос: кто-нибудь знает, как растушевать края, используя чистый 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();

1 Ответ

0 голосов
/ 31 октября 2010

Вы можете найти этот пост в блоге, который я однажды написал, полезным: Мягкие изображения в GDI + . Это покажет вам многое из того, что вам нужно знать. Для создания гладких краев на произвольной фигуре вам также понадобится фильтр сглаживания (который затем нужно будет применить к альфа-каналу), о котором вы можете прочитать о здесь .

...