2017-08-01 72 views
0

我想我可能在WPF中發現了一個錯誤,或者我可能只是不完全理解OpacityMasks的工作方式。正如您在第一張圖片上看到的那樣,我有一條菱形路徑和一個紅色圓圈。我的目標是讓鑽石外的所有東西都看不見。它適用於圓形在鑽石形狀內部,但是無論何時將其移動到其中一個角或路徑外,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「絕對」,然後將其視口屬性設置爲一個適當的矩形,例如視口=「0,0,100,100」