2012-02-09 10 views
6

Ben şu XAML kodu:Görüntü gergin ve ortalanmış mı?

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

ve ben, görsel, bu var:

: Stretch="None" ile

enter image description here

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

, ben hallederim

enter image description here

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

Şimdi, istediğim Stretch="Uniform" ile dikey veya yatay Resmi ortalamak etmektir! Sadece "en küçük" taraf (Uniform ile) ortalanacaktır. Ama şu anda, sen ekran üzerinde görebileceğiniz gibi, Görüntü basitçe ben ne yapmalıyım "Center"

için HorizontalAlignment ve VerticalAlignment tanımlı bile, sol üst köşesinde konur? Bu TAM aynıdır

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

: Burada, sadece dava some1 içinde aynı sorun var bunu çözüme nasıl:

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

DÜZENLEME (Çözüm):

bütün koddur HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform" olarak davranış Resim, Üniforma'ya (Resim, Tuval'den daha küçük veya daha büyük) uzanır ve hem dikey hem de yatay olarak ortalanır!

+0

ayrıca çevredeki Xaml gönderebilir miyim:
Sadece Izgara kullanılır? Belki de resmin ebeveyni ortalanmıyor ya da esnetilmiyor. – Botz3000

+0

soruyu ekledi! –

cevap

7

Bir Kılavuza yerleştirirseniz, otomatik olarak ortalanır.

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

biraz daha Izgaralar ile tam kontrolü:

<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

Görüntüyü bir Izgara ile teslim ettiğimde işe yaramıyor ve Tuvalim veya tüm UserControl'üm etrafında bir Izgara kullanmak istemiyorum ... Aslında bir Izgara kullanmak istemiyorum. Belki sadece Görüntüyü teslim etmek zorunda kalırsam ama bu durum aslında değil. –

+0

İstenilen düzeni nasıl elde edebileceğinizle ilgili düzenlenmiş cevabımı görün. Tuvali hiç kullanmamalısın. – Clemens

+0

Bu genellikle kullanmak istemediğim kod türüdür! Şu anda temiz bir XAML kodum var ve satır oluşturmak istemiyorum; sütunlar, şablonlar ve bu tür şeyler:/ –

6

Tuval görüntüsünün HorizontalAlignment desteklemez. Bu gibi dinamik bir düzen istiyorsanız, Tuval kötü bir seçimdir (aslında 'un bu düzenini yok saymak istiyorsanız kullanışlıdır). Tuvali kullanmanın tam nedeni nedir?

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

Sorumu bulduğum çözümle düzenledim! –

İlgili konular