2017-08-01 13 views
0

私はWPFでバグを見つけた可能性があります。あるいは、OpacityMasksのしくみを完全に理解できていないかもしれません。あなたが最初のイメージで見ることができるように、私はダイヤモンド形の道と赤い円を持っています。私の目標は、ダイヤモンドの外のすべてを見えないようにすることです。円が菱形の中にあるときに機能しますが、コーナーの1つまたはパスの外側に移動するたびに、2番目の画像で見られるように、OpacityMaskが伸びたり歪んだように見えます。私の質問は、円(または他の子要素)がどこにあるかにかかわらず、どのようにOpacityMaskを動作させることができるかです。WPF 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> 

ですが、私は直接画像を埋め込むのに十分な評判を持っていません。

ご協力いただきましてありがとうございます。

+0

これはバグではありません。 VisualBrushは、-17からグリッドのActualHeightまで垂直に表示されるグリッド領域全体に引き伸ばされます。 VisualBrushで 'ViewportUnits =" Absolute "を設定し、そのViewportプロパティを適切な矩形に設定します。 'Viewport =" 0,0,100,100 "' – Clemens

+0

ありがとう、これは私の問題を解決しました。 –

答えて

0

クレメンスは、その後

セットViewportUnitsたVisualBrushに=「絶対」、および適切な長方形にそのビューポートのプロパティを設定し、例えば私の問題を解決しましたViewport = "0,0,100,100"