Я хочу сделать прозрачную (стирать) конкретную область изображения с помощью 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) игнорируется. Какие-либо предложения?
Да, альфа-маска эффект, что действительно необходимо, но он работает только с ОС Windows 10 годовщину которой, в то время как мое приложение поддерживает ОС Windows 8.1+. В настоящий момент я делаю это вручную через WriteableBitmap. Я отмечаю его как asnwer, учитывая, что больше ничего не доступно. – cyanide