Изображение растянуто и центрировано? - PullRequest
6 голосов
/ 09 февраля 2012

У меня есть следующий код 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), но в данный момент, как вы можете видеть на скриншотах, изображение просто помещается в верхний левый угол, даже если я определилHorizontalAlignment и VerticalAlignment до "Center"

Что мне делать?

весь код:

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

РЕДАКТИРОВАТЬ (решение): на всякий случайУ some1 такая же проблема, вот как я ее решил:

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

Это точно такое же поведение, как и HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform" Изображение растянуто до Uniform (независимо от того, меньше ли изображение, чем Canvas)и он центрирован как вертикально, так и горизонтально!

Ответы [ 2 ]

7 голосов
/ 09 февраля 2012

Если вы поместите его в сетку, он будет центрирован автоматически.

<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>
6 голосов
/ 09 февраля 2012

Canvas не поддерживает горизонтальное выравнивание изображения. Если вы хотите динамический макет, подобный этому, Canvas - плохой выбор (это полезно, если вы хотите на самом деле игнорировать такой макет). По какой именно причине вы используете холст?
Просто используйте сетку:

<Grid Background="#FF881607">
    <Image Source="a.jpg" HorizontalAlignment="Center"  VerticalAlignment="Center" Stretch="Uniform"/>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...