应用蒙版图像进行Win2D擦除

时间:2017-01-03 05:06:54

标签: win2d

我想使用Win2D制作透明(擦除)图像的特定区域。

为此,我有一个包含透明色的面膜 (RRGGBBAA = xxxxxx00)用于需要擦除的像素,白色(RRGGBBAA = FFFFFFFF)用于应保留的像素。

理想情况下,我需要 CanvasBlend.And CanvasBlend.Mutiply ,但这些都不是Win2D提供的。但是,有 CanvasBlend.Min ,正如我所料,它也应该能够胜任。

以下是代码:

  internal static CanvasBitmap applyMask(
        ICanvasResourceCreatorWithDpi creator,
        CanvasBitmap sourceBmp, CanvasBitmap maskBmp,
        CanvasBlend blendMode = CanvasBlend.Min) {

        var destSize = sourceBmp.Size;
        var crt = new CanvasRenderTarget(creator, destSize);
        var rect = new Rect(new Point(), destSize);

        using (var ds = crt.CreateDrawingSession()) {
             ds.Blend = CanvasBlend.SourceOver;
             ds.DrawImage(sourceBmp, rect);
             ds.Blend = blendMode;
             ds.DrawImage(maskBmp, rect);
        }

        return crt;
  }

它显示完全未修改的源图像,就像忽略了蒙版图像不透明度(Alpha)一样。有什么建议?

1 个答案:

答案 0 :(得分:1)