2012-02-09 164 views
6

我有以下XAML代碼:圖像拉伸並居中?

<Image Source="a.jpg" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform"/> 

和我,在視覺上,得到這個:

enter image description here

http://img810.imageshack.us/img810/2401/imagestretchuniform.png

隨着Stretch="None",我得到這個:

enter image description here

http://img28.imageshack.us/img28/1783/imagestretchnone.png

現在,我要的是與Stretch="Uniform"垂直或水平居中的形象!只有「最小」一側(Uniform)將居中,正確。但此刻,你可以在截圖看,該圖像是簡單地把在左上角,即使我定義HorizontalAlignmentVerticalAlignment"Center"

我應該怎麼辦?

整個代碼爲:

<UserControl [...]> 
    <Canvas Width="640" Height="480" Background="#FF881607"> 
     <Image Source="a.jpg" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform"/> 
    </Canvas> 
</UserControl> 

EDIT(解決方案): 萬一some1有同樣的問題,這是我如何解決它:

<Canvas Width="640" Height="480" Background="#FFAA00FF" > 
    <Image Source="z.jpg" Height="480" Width="640"/> 
</Canvas> 

這是完全一樣的行爲爲HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform" 圖像拉伸至均勻(無論圖像是比帆布小還是大),並且它的中心既垂直又水平!

+0

你能也張貼周圍的XAML?也許圖像的父母不是居中或拉伸。 – Botz3000 2012-02-09 11:04:26

+0

添加到問題! – 2012-02-09 11:07:58

回答

7

如果你把它放在一個網格中,它會自動居中。

<Grid> 
    <Image Source="a.jpg"/> 
</Grid> 

完全控制一些更多的網格:

<UserControl> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <Grid Grid.Row="0"> 
      <Image Source="a.jpg" Stretch="Uniform"/> 
     </Grid> 
     <Grid Grid.Row="1" Margin="10"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <Button Grid.Column="0" Content="Start"/> 
      <Button Grid.Column="2" Content="Stop"/> 
     </Grid> 
    </Grid> 
</UserControl> 
+0

不工作,如果我只是放棄圖像與網格,我不想在我的畫布或我的整個UserControl周圍使用網格...實際上,我不想使用網格。也許如果我只是放棄圖像,但實際上並非如此 – 2012-02-09 11:14:50

+0

請參閱我編輯的答案,瞭解如何獲得所需的佈局。你根本不應該使用Canvas。 – Clemens 2012-02-09 11:18:38

+0

這通常是我不想使用的那種代碼!我目前有一個乾淨的XAML代碼,我不想創建行;列,模板和這些東西:/ – 2012-02-09 11:22:21

6

畫布不支持圖像的Horizo​​ntalAlignment。如果你想要像這樣的動態佈局,Canvas是一個不錯的選擇(如果你想實際上忽略這樣的佈局是有用的)。你使用Canvas的確切原因是什麼?
只需使用一個網格:

<Grid Background="#FF881607"> 
    <Image Source="a.jpg" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform"/> 
</Grid> 
+0

我用我找到的解決方案編輯了我的問題! – 2012-02-10 08:40:25