不幸的是,使用ImageSharp执行此操作的语法在当前预览版本和开发版本之间发生变化,这应该是最终的 API。
使用1.0.0-beta0005,您可以像这样混合这些图像:
using (var pattern = Image.Load("img_pattern.png"))
using (var texture = Image.Load("img_texture.png"))
{
var options = new GraphicsOptions { BlenderMode = PixelBlenderMode.In };
using (var result = pattern.Clone(x => x.DrawImage(options, texture)))
{
result.Save("img_out.png");
}
}
请注意,您必须为此使用具有 alpha 透明度的图案图像。您不能使用键控透明度(至少不能使用此解决方案)。
为此,我已将模式设为透明(您可以在此处获取我使用的模式)并得到以下结果:

在最终版本中,它将如下所示:
using (var pattern = Image.Load("img_pattern.png"))
using (var texture = Image.Load("img_texture.png"))
{
var options = new GraphicsOptions { AlphaCompositionMode = PixelAlphaCompositionMode.SrcIn };
using (var result = pattern.Clone(x => x.DrawImage(texture, options)))
{
result.Save("img_out.png");
}
}
顺便说一句,这是一个很好的方法。是查看包含此功能测试的PorterDuffCompositorTests
文件,因此将始终反映当前 API。