2012-02-11 29 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 2012-02-11 16:20:54

+0

這只是一個長寬比的東西?水平看起來一樣;垂直看起來不同 - 但:兩個決議的方面是不一樣的 – 2012-02-11 16:22:55

+0

來填充屏幕...但沒有切穿圖像,我需要它所有 – 2012-02-11 16:23:14

回答

3

問題:

myStackPanel.Children.Add(myImage); 

不要,如果你想調整正確的圖像使用StackPanel(爲什麼有一個StackPanel無論如何,如果它包含沒有別的?) ,在這裏它會溢出並切斷。還有各種其他的panels,例如Grids,這更適合於此。

+0

我的選擇是什麼?我是C#的新手。當我嘗試直接將它應用到網格時,它並沒有填滿整個屏幕。 – 2012-02-11 16:24:05

+0

@ eric.itzhak:如果您只是將圖像添加到網格,它應該默認伸展。另外**你應該扔掉所有的C#並使用XAML **。 – 2012-02-11 16:25:39

+0

雅但在此圖像之前,在XAML中創建了一個3D動畫。我應該在XAML中創建網格並隱藏它直到代碼點?當我將它編輯到網格時,它不會伸展。 – 2012-02-11 16:27:17

2

該程序完全按照您的要求進行操作。您正在使用StackPanel,這意味着它中的所有物品都將「堆疊」。默認情況下,StackPanel的方向是垂直的,這意味着第二個控件放置在第一個控件下面,第三個控件放置在第二個控件下面等等。所有這些都使用它們可用的全部寬度。

就你而言,這意味着圖像被拉伸到窗口的寬度。如果其高度不合適,底部將被切斷。或者,如果窗口的高度太大,您會在圖像下方看到空的空間。

最簡單的方法是,不要讓窗口最大化並嘗試更改窗口的大小。

如果您不想要這種行爲,您可以使用不同的面板,例如Grid作爲H.B.建議。

+0

謝謝。出於某種原因,當我添加網格圖像時,它不能填滿整個屏幕 – 2012-02-11 16:33:46