2012-04-01 7 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の画像が事前に定義され、異なる画面解像度で微細スケール。 私の問題は、ランタイム中にソースを取得し、すべての解像度で同じ正確なサイズでなければならない3番目のイメージにあります。 4x3のアスペクト比で撮影された写真が含まれており、そのままにしておきたい。

しかし、16x9の解像度では、画像が引き伸ばされます。私はXAMLで固定サイズを設定しようとしました - それは動作しません。私はストレッチをNoneに設定しようとしました - どちらもうまくいきません。私は、このImageのサイズをコードの背後に置くことを試みました。無駄になりました。

この3番目の画像をスケーリングできないようにするには他に何ができますか? これはいくつかの理由からViewbox内にとどまるべきです。

+0

ViewBoxをを設定しますようにのみ、誤っていれば、適切なアスペクト比を取得します[ストレッチ](http://msdn.microsoft.com/en-us/library/system.windows.media.stretch.aspx )を「フィル」に設定します。 – Clemens

+0

私はこの要素に対してStretch = "None"を設定しました。何の効果もありませんでした。 – Flot2011

+0

その理由は何ですか?なぜ2つのビューボックスと3つ目の行を持つグリッドはありませんか? – Paparazzi

答えて

4

2つの重なった要素を使用します。

<Grid> 
    <Viewbox> 
     <Grid> 
      ... scaled images 
     </Grid> 
    </Viewbox> 
    <Grid> 
     ... non scaled images 
    <Grid> 
<Grid> 
関連する問題