Полутоновый эффект в gdi + - PullRequest
4 голосов
/ 16 января 2012

Как мне подражать этому полутоновому эффекту в GDI +?

Это выглядит почти как Флойд-Стейнберг размытая версия изображения, перекрывающая полную, ноЯ не убежден.

enter image description here

1 Ответ

4 голосов
/ 01 февраля 2012

Я попробовал и получил такой результат: enter image description here

Это может быть место для начала. Я сделал это так:

  1. Нарисуйте исходную картинку с низкой насыщенностью (используя цвет матрица)
  2. Нарисуйте исходное изображение на 1) с высокой насыщенностью используя маску рисунка (то есть точки)

Я создал маску шаблона следующим образом:

        using (var g = Graphics.FromImage(bmpPattern))
        {
            g.Clear(Color.Black);
            g.SmoothingMode = SmoothingMode.HighQuality;
            for (var y = 0; y < bmp.Height; y += 10)
                for (var x = 0; x < bmp.Width ; x += 6)
                {
                    g.FillEllipse(Brushes.White, x, y, 4, 4);
                    g.FillEllipse(Brushes.White, x + 3, y + 5, 4, 4);
                }
        }

А потом я применил его к перенасыщенному растровому изображению, используя эту технику .

Обновление : проработка процесса объединения изображений. Давайте поговорим немного более обобщенно и скажем, что мы хотим объединить две разные раскрашенные версии одного и того же изображения с помощью маски шаблона, в результате чего получится новое изображение - мы можем сделать это следующим образом:

Создайте ТРИ новых растровых изображения, все с тем же размером, что и исходное изображение. Назовите их bmpA, bmpB и bmpMask.

  • Нарисуйте одну цветную версию / версию эффекта в bmpA
  • Нарисуйте другой цветной вариант с эффектом в bmpB
  • Создание маски в bmpMask (черно-белая)
  • Вставьте один из каналов R / G / B bmpMask в альфа-канал bmpB, используя Метод TransferOneARGBChannelFromOneBitmapToAnother.
  • Нарисуйте bmpB поверх bmpA (поскольку bmpB теперь содержит прозрачные части)
  • Результат теперь bmpA. bmpB и bmpMask могут быть уничтожены.

Готово

...