Как сделать дочерний элемент Viewbox не масштабируемым - PullRequest
2 голосов
/ 01 апреля 2012

У меня есть окно WPF с Viewbox. Я хочу, чтобы один из дочерних элементов этого окна просмотра оставался одинаковым при любом разрешении экрана.

Мой XAML:

<Viewbox Name="MyMainViewbox" Stretch="Fill">
<Grid Name="MyMainGrid">
    <Image Source="Images/bg.bmp" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stretch="Fill"/>
    <Image Name="Thumb1" Source="Images/t1.png"  MouseUp="Right_Click"  Margin="0, 100, 50, 0" HorizontalAlignment="Right" VerticalAlignment="Stretch" Visibility="Visible"/>
    <Image Name="Thumb2" Source="Images/t2.png" MouseUp="Left_Click"  Margin="50, 100, 0, 0" HorizontalAlignment="Left"  VerticalAlignment="Stretch" Visibility="Visible"/>
    <Image Name="CurThumb" Width="640" Height="480" Stretch="UniformToFill"  Margin="0, 50, 0, 0" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Hidden"/>
 </Grid>
</Viewbox>

Первые 2 изображения внутри окна просмотра заранее заданы и масштабируются с разным разрешением экрана. Моя проблема с 3-м изображением, которое получает свой источник во время выполнения и должно иметь одинаковый точный размер при всех разрешениях. Он будет содержать фотографии, сделанные с соотношением сторон 4х3, и я хочу, чтобы они остались такими.

Однако при разрешении экрана 16x9 они растягиваются. Я попытался установить фиксированный размер в XAML - он не работает. Я попытался установить Stretch в None - не работает ни то, ни другое. Я попытался уменьшить размеры этого изображения в коде позади - безрезультатно.

Что еще я могу сделать, чтобы сделать эту третью картинку не масштабируемой? Он должен оставаться внутри Viewbox по нескольким причинам.

1 Ответ

3 голосов
/ 01 апреля 2012

Используйте два перекрывающихся элемента.

<Grid>
    <Viewbox>
        <Grid>
            ... scaled images
        </Grid>
    </Viewbox>
    <Grid>
        ... non scaled images
    <Grid>
<Grid>
...