В этой статье: https://msdn.microsoft.com/en-us/library/windows/apps/jj206957%28v=vs.105%29.aspx показан способ обрезания изображения для эллипса, но когда я копирую его в свой проект, я получаю сообщение об ошибке, что я не могу использовать геометрию эллипса, потому что ожидаемый тип является «RectangleGeometry». Я создаю приложение Windows Phone 8.Как скопировать изображение в эллипс в XAML
Есть что-то не так с этой статьей или я что-то упускаю?
Мой XAML Пример кода:
<Border BorderThickness="1" BorderBrush="AliceBlue">
<Grid Margin="{StaticResource GridMargin}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>
<ColumnDefinition Width="1.5*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Stretch="Uniform" Source="{Binding Photo}">
<Image.Clip>
<EllipseGeometry RadiusX="100" RadiusY="100" Center="225,175"/>
</Image.Clip>
</Image>
<Grid Grid.Column="1" Margin="{StaticResource SmallGridMargin}">
<Grid.RowDefinitions>
<RowDefinition Height="1.5*"></RowDefinition>
<RowDefinition Height="2*"></RowDefinition>
<RowDefinition Height="1*"></RowDefinition>
</Grid.RowDefinitions>
<Viewbox Stretch="Uniform" Grid.Row="0">
<TextBlock Text="{Binding BookAuthor}"></TextBlock>
</Viewbox>
<Viewbox Stretch="Uniform" Grid.Row="1">
<TextBlock Text="{Binding BookTitle}"></TextBlock>
</Viewbox>
<Viewbox Stretch="Uniform" Grid.Row="2">
<TextBlock Text="{Binding Id}"></TextBlock>
</Viewbox>
</Grid>
Это странно, и [здесь] (https://msdn.microsoft.com/en-us /library/windows/apps/windows.ui.xaml.uielement.clip.aspx) объясняет, что «Геометрия отсечения для UIElement.Clip в API Runtime Windows должна быть RectangleGeometry. Вы не можете указать непрямоугольную геометрию, как это допускается в некоторых инфраструктурах XAML, таких как Microsoft Silverlight ». –
Жаль, тогда обрезание кругов стало популярным в последнее время. :( –
Вы можете использовать 'Image.OpacityMask' (как описано в статье), чтобы дать тот же самый желаемый эффект. Просто сделайте GradientStop очень близко друг к другу (0,01 прочь). – Barnstokkr