Я хочу сделать прозрачной (стереть) определенную область изображения с помощью 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;
}
Он показывает исходное изображение полностью неизмененным, как будто непрозрачность маскированного изображения (альфа) игнорируется. Какие-либо предложения?