2012-04-01 19 views
2

我有一个带有Viewbox的WPF窗口。我希望此Viewbox的子元素之一在任何屏幕分辨率下保持相同的大小。如何使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是预定义的,并在不同的屏幕分辨率精细地缩放。 我的问题是在运行时获取其源的第三张图像,并且在所有分辨率下应该具有相同的确切大小。它将包含以4x3比例拍摄的照片,并且我希望它们保持如此。

然而,在16x9屏幕分辨率下,它们被拉伸。我试图在XAML中设置一个固定大小 - 它不起作用。我曾尝试将Stretch设置为None - 也不起作用。我试图在后面的代码中放置此图像的大小 - 无济于事。

我还能做些什么来使第三张图片不可缩放? 由于几个原因,它应该留在视图框内。

+0

您将只偶然得到一个合适的宽高比,只要该视框设置[拉伸](http://msdn.microsoft.com/en-us/library/system.windows.media.stretch.aspx )到'填充'。 – Clemens 2012-04-01 13:24:00

+0

我为这个元素设置了Stretch =“None” - 它没有任何效果。 – Flot2011 2012-04-01 13:28:43

+0

那些夫妇的原因是什么?为什么不是一个具有两个视图框和第三行的网格? – Paparazzi 2012-04-01 13:37:26

回答

4

使用两个重叠的元素。

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