0
我想使用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;
}
它與示出源圖像完全未修飾的出現時,彷彿掩蔽圖像的不透明度(阿爾法)被忽略。有什麼建議麼?
是,阿爾法遮掩效果是真正需要的,但它只能在Windows 10 Aniversary,而我的應用程序支持Windows 8.1+。目前我通過WriteableBitmap手動執行。鑑於沒有其他可用的東西,我將其標記爲低級。 – cyanide