WPF OpacityMask странное поведение
Я думаю, что я мог найти ошибку в WPF, или, может быть, я просто не до конца понимаю, как работают OpacityMasks. Как вы можете видеть на первом изображении, у меня есть ромбовидная дорожка и красный круг. Моя цель - сделать все, что находится за пределами алмаза, невидимым. Он работает, когда круг находится внутри ромбовидной формы, но всякий раз, когда я перемещаю его в один из углов или за пределы контура, OpacityMask кажется растянутым или искаженным, как вы можете видеть на втором изображении. У меня вопрос, как я могу заставить OpacityMask работать независимо от того, где находится круг (или любой другой дочерний элемент).
И это мой код 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>
Извините за публикацию изображений со ссылками, но у меня недостаточно репутации, чтобы напрямую вставлять изображения.
Любая помощь приветствуется!
1 ответ
Клеменс решил мою проблему
Установите ViewportUnits="Absolute" в VisualBrush, а затем установите для его свойства Viewport соответствующий прямоугольник, например, Viewport="0,0,100,100"