2012-04-01 22 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>