如何使Viewbox的子元素不可伸缩

时间:2012-04-01 13:12:43

标签: wpf image xaml viewbox scalable

我有一个带Viewbox的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>

Viewbox中的前2个图像是预定义的,并在不同的屏幕分辨率下精确缩放。 我的问题是第3个图像在运行时获取其源,并且在所有分辨率下应该具有相同的确切大小。它将包含以4x3宽高比拍摄的照片,我希望它们保持这样。

然而,在16x9屏幕分辨率下,它们会被拉伸。我试图在XAML中设置固定大小 - 它不起作用。我试图将Stretch设置为None - 两者都不起作用。我试图在后面的代码中休息这个图像的大小 - 无济于事。

我还能做些什么才能使第三张照片不可扩展? 由于几个原因,它应该留在Viewbox中。

1 个答案:

答案 0 :(得分:3)

使用两个重叠元素。

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