【问题标题】:WPF OpacityMask weird behaviorWPF OpacityMask 奇怪的行为
【发布时间】:2017-08-01 23:02:48
【问题描述】:

我想我可能在 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>

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

感谢任何帮助!

【问题讨论】:

  • 这不是错误。 VisualBrush 被拉伸到整个可见的 Grid 区域,垂直范围从 -17 到 Grid 的 ActualHeight。在 VisualBrush 上设置 ViewportUnits="Absolute",然后将其 Viewport 属性设置为适当的矩形,例如Viewport="0,0,100,100"
  • 谢谢,这解决了我的问题。

标签: wpf xaml opacitymask


【解决方案1】:

Clemens 解决了我的问题

在 VisualBrush 上设置 ViewportUnits="Absolute",然后将其 Viewport 属性设置为适当的矩形,例如视口="0,0,100,100"

【讨论】:

    猜你喜欢
    • 2013-05-13
    • 1970-01-01
    • 2016-02-01
    • 2011-08-22
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多