其实我想知道将图像擦除到透明度。就像我在页面背景上有一个图像和上面的另一个图像。现在我想要,如果我用手指擦除上面的图像,那么应该出现较低的图像,只是意味着图像将变得透明。我做这样的事情,但它不符合我的要求。 您的建议是欢迎:)
private void Canvas_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
currentPoint = e.GetPosition(this.canvas);
//Initialize line according to currentpoint position.
Line line = new Line()
{
X1 = currentPoint.X,
Y1 = currentPoint.Y,
X2 = oldPoint.X,
Y2 =oldPoint.Y
};
line.StrokeDashCap = PenLineCap.Round;
line.StrokeEndLineCap = PenLineCap.Round;
line.StrokeLineJoin = PenLineJoin.Round;
line.StrokeThickness = 20;
line.Stroke = new SolidColorBrush(Colors.Black) ;
////////////////////////////////
//Set color & thickness of line.
//Line add in canvas children to draw image & assign oldpoint.
this.canvas.Children.Add(line);
oldPoint = currentPoint;
}
答案 0 :(得分:0)
你可以用3种不同的方式做到这一点:
使用opaque overlay和UIElement.Clip
属性。但是你需要处理Geometry
。而且我担心它的CPU成本会非常高。
使用WriteableBitmap
并更改图片的Alpha通道。您可以使用WriteableBitmapEx
。
使用opaque overlay和UIElement.OpacityMask
属性。我认为这是实现这一目标的最佳方式,因为您不仅限于使用位图(因此您可以将任何XAML控件置于叠加层下方),如第二种方式。