C# 半色调效果与gdi+;
我将如何在GDI+中模拟半色调效果 它看起来几乎像是覆盖了完整图像的抖动版本,但我不相信C# 半色调效果与gdi+;,c#,gdi+,C#,Gdi+,我将如何在GDI+中模拟半色调效果 它看起来几乎像是覆盖了完整图像的抖动版本,但我不相信 我尝试了一下,得到了这样的结果: 这可能是一个开始。我是这样做的: using (var g = Graphics.FromImage(bmpPattern)) { g.Clear(Color.Black); g.SmoothingMode = SmoothingMode.HighQuality; fo
我尝试了一下,得到了这样的结果: 这可能是一个开始。我是这样做的:
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);
}
}
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);
}
}
使用(var g=Graphics.FromImage(bmpPattern))
{
g、 清晰(颜色为黑色);
g、 SmoothingMode=SmoothingMode.HighQuality;
对于(变量y=0;y
然后我把它用在过饱和的位图上
更新:详细说明图像是如何合并的。让我们更笼统地说,我们希望使用图案遮罩将同一图像的两个不同彩色版本组合起来,生成一个新图像-我们可以这样做:
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(黑白)中创建遮罩
- 使用将bmpMask的一个R/G/B通道推入bmpB的alpha通道 TransferOneArgbChannel从一个位图转换到另一个方法李>
- 在bmpA上绘制bmpB(因为bmpB中现在有透明部分)
- 结果现在是bmpA。可以处理bmpB和bmpMask
完成这不是半色调,像素大小不可变。这是一种有模式的抖动。印刷机算法是秘密的。@HansPassant:Hmmm。。。那好吧。祈祷有人会传播爱。嗯,你为什么不去实现它呢?没有什么内置的东西可以让它变得简单。放大图片查看图案。如果可以的话,我不会问关于如何处理的问题。为此干杯。效果很好,看起来我可以用。我注意到,在您博客中的示例代码中,方法
code
transferOneArgbChannel从一个位图转换到另一个使用了不安全代码。这些东西主要用于web开发,所以中等信任度对我来说是必须的。您是否有一个不使用不安全代码的方法的示例?更改非常简单。下面是将位图字节移出到普通字节[]然后再返回的代码:下面是如何更改饱和度:。亮度和对比度也可以通过使用颜色矩阵来实现。你不会碰巧还有你编写的应用程序来测试它吧?我正在重访它,我迷路了。对不起,不。不是在我可以找到它的地方。但是如果你有任何代码可以分享,我可以试着指导你。