2012-02-11 23 views
1

私は厄介な問題を抱えています。 私はグリッドに画像を適用していますが、それは画面の解像度で画像をカットし、論理的にはカットしません。 は1280×800で、それは次のように示しています link to image画面解像度で画像を切り取る

をし、それが800×600だとき、それは次のように示しています ちょっと低いため高分解能で台無しにされlink to image

が、それは絵のより多くを示して。 何が起こっているのでしょうか? これは私のコードです:

Grid MyGrid = new Grid(); 
Image img = new Image(); 

StackPanel myStackPanel = new StackPanel(); 
myStackPanel.CanVerticallyScroll = true; 

Image myImage = new Image(); 
BitmapImage myImageSource = new BitmapImage(); 
myImageSource.BeginInit(); 
myImageSource.UriSource = new Uri("C:\\Users\\Public\\Pictures\\Sample Pictures\\Desert.jpg"); 
myImageSource.EndInit(); 
myImage.Source = myImageSource; 
// myImage.HorizontalAlignment = System.Windows.HorizontalAlignment.Center; 
// myImage.VerticalAlignment = System.Windows.VerticalAlignment.Center; 
// myStackPanel.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; 
// myStackPanel.VerticalAlignment = System.Windows.VerticalAlignment.Stretch; 

myStackPanel.Children.Add(myImage); 

MyGrid.Children.Add(myStackPanel); 

_LayoutRoot.Children.Add(MyGrid); 
+0

画像をどのように正確に表示しますか? – svick

+0

これはちょうどアスペクト比のものですか?水平は同じように見えます。垂直は違って見える - しかし:側面の広告は2つの解像度が同じではない –

+0

画面を埋めるために...しかし、私はそれがすべて必要な画像をカットしていない –

答えて

3

問題:

myStackPanel.Children.Add(myImage); 

あなたは画像が(それは何もが含まれていない場合、なぜStackPanelのがとにかくありますか?)を適切にサイズ変更したい場合はStackPanelを使用しないでくださいここではオーバーフローしてカットします。様々な他のものがある。panelsGridsがあり、これはこれに適しています。

+0

私の選択肢は何ですか?私はC#を初めて使っています。私はそれをグリッドに直接適用しようとすると、画面全体を満たしませんでした。 –

+0

@ eric.itzhak:画像をグリッドに追加するだけの場合は、デフォルトで伸びる必要があります。また**あなたはそのC#を全て投げ捨て、XAML **を使うべきです。 –

+0

しかし、このイメージの前には、XAMLで作成された3Dアニメーションがあります。私はxamlでグリッドを作成し、そのコードポイントまで非表示にする必要がありますか?私はグリッドにそれを編集するときにそれはstrech dosen't。 –

2

プログラムはあなたがそれを伝えるものを正確に行います。 StackPanelを使用しています。つまり、その中のすべてのアイテムが「積み重ねられる」ことを意味します。デフォルトでは、StackPanelの向きは垂直です。つまり、2番目のコントロールが最初のコントロールの下に、3番目のコントロールが2番目のコントロールの下に配置されます。すべてのコントロールは、使用可能な幅をすべて使用します。

あなたの場合、画像がウィンドウの幅に引き伸ばされていることを意味します。高さが合わない場合、底部は切断されます。また、ウィンドウの高さが大きすぎる場合は、画像の下に空白が表示されます。

これを確認する最も簡単な方法は、ウィンドウを最大化しておらず、ウィンドウのサイズを変更することです。

この動作をしたくない場合は、Gridのような異なるパネルをH.Bとして使用できます。提案する。

+0

ありがとうございます。何らかの理由で、グリッドにイメージを追加すると、それは画面全体を埋めることができません –