2012-04-10 9 views
1

Ich habe Probleme mit der Kombination einer OpacityMask und Adorners in WPF.Warum verursacht meine OpacityMask Renderfehler?

Grundsätzlich gibt es ein Bild mit einer Opazitätsmaske und darüber einen Adorner, der eine bewegliche Richtlinie darstellt.

Wenn der Adorner bewegt wird, befinden sich Artefakte im Bild. Entlang der Begrenzungsbox des Adorners erscheinen 1px breite Linien. Bei diesen Linien wird das Bild transparent (obwohl der Bereich durch die Deckkraftmaske nicht transparent gemacht wird). Dieses Verhalten wird in Abhängigkeit von zwei (afaik) Faktoren:

  • Wenn ich die Opazitätsmaske auf null gesetzt, es gibt keine Artefakte sichtbar.
  • Wenn ich die Skalierungs-Transformation ändere, ändert sich die Deckkraft der Artefakte.

Irgendeine Idee, was dieses Verhalten verursachen könnte oder wie ich es vermeiden könnte?

Hier ist ein XAML-Code, der mein Layout darstellt. Dies ist nicht der tatsächliche Layout-Code. Ich habe versucht, den Layout-Inhalt auf die Schlüsselkomponenten zu reduzieren, von denen ich denke, dass sie in das Problem involviert sind.

<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> 

Ein Screenshot der Artefakt Linien: Screenshot of the artifacts

Antwort

1

ich vor kurzem lief in genau diesem Thema. Nach ein wenig googeln, lief ich in this msdn forum post, die mir die Problemumgehung gab, die ich brauchte.

In meinem Fall hatte ich ein Raster mit einer OpacityMask. Die Kinder des Gitters zeigten die Artefakte an. Um zu verhindern, dass die Artefakte angezeigt werden, konnte ich die angefügte Eigenschaft RenderOptions.EdgeMode auf meinem Raster auf "Aliased" setzen.

+0

Danke, das sieht wirklich gut aus. – NikoR

Verwandte Themen