Может кто-нибудь объяснить это поведение WPF?
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<!-- Rounded mask -->
<Border Name="mask" VerticalAlignment="Top" Background="Black" CornerRadius="48" Height="400" Width="400" />
<StackPanel>
<!-- Use a VisualBrush of 'mask' as the opacity mask -->
<StackPanel.OpacityMask>
<VisualBrush Visual="{Binding ElementName=mask}" />
</StackPanel.OpacityMask>
<Grid>
<Border Background="Red" Height="400" Width="400"/>
<Border Background="Blue" Height="200" Width="400"/>
</Grid>
</StackPanel>
</Grid>
</Page>
Как и следовало ожидать, приведенный выше код генерирует следующее изображение (Kaxaml):
альтернативный текст http://robbertdam.nl/share/11.png
Когда я меняю строку
<Border Background="Blue" Height="200" Width="400"/>
в
<Border Background="Blue" Height="200" Width="600"/>
изображение выглядит следующим образом (не ожидал):
альтернативный текст http://robbertdam.nl/share/12.png
Углы больше не закруглены! Этот вопрос на самом деле является «уменьшенным» примером проблемы, с которой я сталкиваюсь в моем программном обеспечении, использующем подобные маски.
Как я могу обойти это?