我们可以擦除Windows Phone 8中的透明度吗?

时间:2014-09-04 10:13:57

标签: c# xaml windows-phone-8

其实我想知道将图像擦除到透明度。就像我在页面背景上有一个图像和上面的另一个图像。现在我想要,如果我用手指擦除上面的图像,那么应该出现较低的图像,只是意味着图像将变得透明。我做这样的事情,但它不符合我的要求。 您的建议是欢迎:)

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;
}

1 个答案:

答案 0 :(得分:0)

你可以用3种不同的方式做到这一点:

  1. 使用opaque overlay和UIElement.Clip属性。但是你需要处理Geometry。而且我担心它的CPU成本会非常高。

  2. 使用WriteableBitmap并更改图片的Alpha通道。您可以使用WriteableBitmapEx

  3. 执行此操作
  4. 使用opaque overlay和UIElement.OpacityMask属性。我认为这是实现这一目标的最佳方式,因为您不仅限于使用位图(因此您可以将任何XAML控件置于叠加层下方),如第二种方式。