2015-04-24 27 views
2

本文內容:https://msdn.microsoft.com/en-us/library/windows/apps/jj206957%28v=vs.105%29.aspx顯示了一種將圖像剪切爲橢圓的方法,但是當我將其複製到我的項目時,我得到一個錯誤,指出我不能使用橢圓幾何,因爲預期類型是「矩形幾何」。我正在構建一個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>

+0

這是奇怪的,也是[這裏](https://msdn.microsoft.com/en-us /library/windows/apps/windows.ui.xaml.uielement.clip.aspx)解釋說:「Windows Runtime API中的UIElement.Clip的剪切幾何必須是RectangleGeometry,不能指定非矩形幾何,正如Microsoft Silverlight等一些XAML框架所允許的那樣。「 –

+0

可惜的是,剪裁圈最近得到了流行。 ( –

+0

)您可以使用'Image.OpacityMask'(如文章中所述)給出相同的預期效果。只需使GradientStop彼此非常接近(0.01距離)。 – Barnstokkr

回答

9

MSDN說:Windows運行時API中

裁剪幾何UIElement.Clip必須是RectangleGeometry。您無法指定非矩形幾何體,正如Microsoft Silverlight等一些XAML框架中所允許的那樣。

但是你可以使用橢圓和圖像刷元素作爲填充刷得到相同的結果:

<Ellipse Width="100" Height="100"> 
    <Ellipse.Fill> 
     <ImageBrush ImageSource="{Binding Photo}"/> 
    </Ellipse.Fill> 
</Ellipse> 
+0

我試過了: ' <圖像刷的ImageSource = 「{結合照片}」/> ' 但它不工作(不剪切圖像) –

+0

什麼是resutlt然後?圖像不顯示或不被剪切顯示?您刪除了以前的元素嗎?! –

+0

是的,我用Ellipse替換圖像,顯示圖像但不顯示被修剪。 –