【问题标题】:Applying mask image for erasing with Win2D应用掩码图像以使用 Win2D 进行擦除
【发布时间】:2017-01-03 05:06:54
【问题描述】:

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

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

理想情况下,我需要 CanvasBlend.AndCanvasBlend.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)。有什么建议么?

【问题讨论】:

    标签: win2d


    【解决方案1】:

    【讨论】:

    • 是的,alpha 蒙版效果是真正需要的,但它仅适用于 Windows 10 Aniversary,而我的应用程序支持 Windows 8.1+。目前我通过 WriteableBitmap 手动完成。鉴于没有其他可用的内容,我将其标记为 asnwer。
    猜你喜欢
    • 2020-04-13
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多