WPF OpacityMask 奇怪的行为
WPF OpacityMask weird behavior
我想我可能发现了 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>
很抱歉发布带有链接的图片,但我没有足够的声誉来直接嵌入图片。
感谢任何帮助!
Clemens 解决了我的问题
Set ViewportUnits="Absolute" on the VisualBrush, and then set its Viewport property to an appropriate rectangle, e.g. Viewport="0,0,100,100"
我想我可能发现了 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>
很抱歉发布带有链接的图片,但我没有足够的声誉来直接嵌入图片。
感谢任何帮助!
Clemens 解决了我的问题
Set ViewportUnits="Absolute" on the VisualBrush, and then set its Viewport property to an appropriate rectangle, e.g. Viewport="0,0,100,100"