我正在困扰一个奇怪的问题。 我正在将图像应用于网格,它通过屏幕重新分解来切割图像,而不是逻辑上。 在1280 x 800它显示如下:
当它是800 x 600时,它显示如下:
有点混乱,因为较低的高度分辨率,它显示更多的图片。 知道为什么会发生什么事吗? 这是我的代码:
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 :(得分:3)
问题:
myStackPanel.Children.Add(myImage);
如果你想要正确调整图像大小,请不要使用StackPanel
(如果它不包含任何其他内容,为什么还有StackPanel?),这里只会溢出并剪切。还有其他各种panels,例如Grids
,更适合此。
答案 1 :(得分:2)
该程序正是您告诉它的。您正在使用StackPanel
,这意味着其中的所有项目都将“堆叠”。默认情况下,StackPanel
的方向是垂直的,这意味着第二个控件位于第一个控件下方,第三个控件位于第二个控件下方等等。所有这些控件都使用了所有可用的宽度。
在您的情况下,这意味着图像被拉伸到窗口的宽度。如果它的高度不合适,底部将被切断。或者,如果窗口的高度太大,您会在图像下方看到空白区域。
最简单的方法是不要让窗口最大化并尝试更改窗口的大小。
如果您不想要此行为,可以使用不同的面板,例如Grid
,作为H.B.建议。