2012-02-09 37 views
6

I持って、次のXAMLコード:画像が伸びて中央に配置されていますか?

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

とI、視覚的に、この得た:

Stretch="None"

enter image description here

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

を、私はこれを得ました

enter image description here

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

、私が欲しいのはStretch="Uniform"と垂直方向または水平方向の画像を中央にあります! 「最も小さい」側(Uniform)は中央に配置されます。しかし、現時点では、スクリーンショットで見ることができるように、画像は左上隅に配置されています(とVerticalAlignmentから"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


ちょうどグリッドを使うのか?たぶん、画像の親が中央にない、または伸びていないかもしれません。 – Botz3000

+0

質問に追加! –

答えて

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の周りにグリッドを使用したくない場合は動作しません...実際には、私はグリッドをまったく使用したくありません。たぶん私はイメージを降伏させる必要があるかもしれませんが、それは実際にはそうではありません –

+0

あなたが希望のレイアウトを得る方法の私の編集答えを参照してください。 Canvasをまったく使用しないでください。 – Clemens

+0

これは通常、私が使用したくないコードの種類です!私は現時点ではクリーンなXAMLコードを持っており、行を作成したくありません。列、テンプレート、これらの種類のものです:/ –

6

キャンバスは、画像のたHorizo​​ntalAlignmentをサポートしていません。このような動的レイアウトが必要な場合、Canvasは悪い選択です(実際にのようなレイアウトを無視したい場合に便利です)。キャンバスを使用している正確な理由は何ですか?あなたも、周囲のXAMLを投稿することができます

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

見つけた解決策で私の質問を編集しました! –

関連する問題