繁体   English   中英

使用gdi +进行半色调效果

[英]Halftone effect in with gdi+

我将如何在GDI +中模仿这种半色调效果?

它几乎看起来像Floyd-Steinberg抖动的图像覆盖了一个完整的图像,但我不相信。

在此输入图像描述

我试了一下这个结果: 在此输入图像描述

它可能是一个开始的地方。 我是这样做的:

  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中创建蒙版(黑白)
  • 使用transferOneARGBChannelFromOneBitmapToAnother方法将bmpMask的一个R / G / B通道推入bmpB的alpha通道。
  • 在bmpA上绘制bmpB(因为bmpB现在有透明部分)
  • 结果现在是bmpA。 可以处理bmpB和bmpMask。

完成

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM