1

我在 WPF 中结合使用 OpacityMask 和 Adorners 时遇到了一些麻烦。

基本上有一个应用了不透明蒙版的图像,在它上面有一个装饰器,这是一个可移动的指南。

移动 Adorner 时,图像中有伪影。沿着装饰器的边界框,出现了 1px 宽的线条。在这些线上,图像变得透明(尽管该区域没有被不透明蒙版透明)。这种行为取决于两个(afaik)因素:

  • 当我将不透明度蒙版设置为 null 时,没有可见的伪影。
  • 当我更改缩放变换时,工件的不透明度正在发生变化。

知道什么可能导致这种行为或如何避免它吗?

这是一些代表我的布局的 XAML 代码。这不是实际的布局代码。我试图将布局内容减少到我认为与问题有关的关键组件。

<ScrollViewer>
    <ContentControl> <!-- control for zooming the content with a render transform -->
        <Image Source="..." /> <!-- Background-Image -->
        <Image Source="..."> <!-- Foreground-Image with Mask -->
            <Image.OpacityMask>
                <VisualBrush />
            </Image.OpacityMask>
        </Image>
    </ContentControl>
    <AdornerLayer>
        <myControls:GuideLineAdorner />
    </AdornerLayer>
</ScrollViewer>

工件线的屏幕截图: 工件截图

4

1 回答 1

1

我最近遇到了这个问题。经过一番谷歌搜索后,我遇到了这个 msdn 论坛帖子,它为我提供了所需的解决方法。

就我而言,我有一个带有 OpacityMask 的网格。Grid 的孩子们正在展示这些工件。为了防止显示工件,我可以在我的网格上将 RenderOptions.EdgeMode附加属性设置为“别名”。

于 2012-12-13T21:53:20.950 回答