WPF OpacityMask奇怪的行为

时间:2017-08-01 11:29:16

标签: wpf xaml opacitymask

我想我可能在WPF中发现了一个错误,或者我只是不完全理解OpacityMasks是如何工作的。正如你在第一张图片上看到的那样,我有一条菱形路径和一个红色圆圈。我的目标是让钻石外面的一切都看不见。它在圆形钻石形状内部时起作用,但每当我将其移动到其中一个角落或路径外时,OpacityMask似乎会在第二个图像上看到拉伸或扭曲。我的问题是,无论圆圈(或任何其他子元素)在哪里,我如何使OpacityMask工作。

First image

Second Image

这是我的XAML代码

<Grid Name="rootGrid">
    <Grid>
        <Grid.OpacityMask>
            <VisualBrush Visual="{Binding ElementName=path}"/>
        </Grid.OpacityMask>
        <Path Name="path" 
              Stretch="Fill" 
              Fill="Cyan" 
              StrokeThickness="1" 
              Stroke="GreenYellow" 
              Data="M 0,-1 1,0 0,1 -1,0 0,-1"/>
        <Ellipse Fill="Red" 
                 Margin="20,-17,22,61"/>
    </Grid>
</Grid>

很抱歉发布带有链接的图片,但我没有足够的声誉来直接嵌入图片。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

克莱门斯解决了我的问题   设置ViewportUnits =&#34;绝对&#34;在VisualBrush上,然后将其Viewport属性设置为适当的矩形,例如视口=&#34; 0,0,100,100&#34;