1

OpacityMask と WPF の Adorners の組み合わせで問題が発生しています。

基本的に、不透明マスクが適用された画像と、その上に移動可能なガイドラインである装飾があります。

Adorner を移動すると、画像にアーティファクトが発生します。装飾のバウンディング ボックスに沿って、幅 1 ピクセルの線が表示されます。これらの行で、画像が透明になっています (ただし、領域は不透明マスクによって透明にはなりません)。この動作は、2 つの (afaik) 要因に依存しています。

  • 不透明度マスクを null に設定すると、アーティファクトは表示されません。
  • Scaling-Transform を変更すると、アーティファクトの不透明度が変化します。

何がこの動作を引き起こす可能性があるのか​​、またはそれを回避する方法はありますか?

これが私のレイアウトを表す 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 を持つグリッドがありました。グリッドの子はアーティファクトを表示していました。アーティファクトが表示されないようにするために、グリッドでRenderOptions.EdgeMode添付プロパティを「Aliased」に設定することができました。

于 2012-12-13T21:53:20.950 に答える