CPF/CPF/Effects/OpacityMaskEffect.cs
2023-11-21 23:05:03 +08:00

61 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using CPF.Drawing;
namespace CPF.Effects
{
/// <summary>
/// 透明遮罩
/// </summary>
public class OpacityMaskEffect : Effect
{
/// <summary>
/// 透明遮罩
/// </summary>
public OpacityMaskEffect(Bitmap mask)
{
MaskImage = mask;
}
/// <summary>
/// 遮罩的图片
/// </summary>
public Bitmap MaskImage
{
get { return GetValue<Bitmap>(); }
set { SetValue(value); }
}
[PropertyChanged(nameof(MaskImage))]
void OnMaskImage(object newValue, object oldValue, PropertyMetadataAttribute attribute)
{
if (newValue == null)
{
throw new Exception("MaskImage不能为null");
}
}
public override void DoEffect(DrawingContext dc, Bitmap bitmap)
{
var img = MaskImage;
using (var l = bitmap.Lock())
{
using (var mask = img.Lock())
{
var w = bitmap.Width;
var h = bitmap.Height;
for (int x = 0; x < w; x++)
{
for (int y = 0; y < h; y++)
{
}
}
}
}
var rect = new Rect(0, 0, bitmap.Width, bitmap.Height);
dc.DrawImage(bitmap, rect, rect);
}
}
}