Разрезает изображение по разрешению экрана - PullRequest
1 голос
/ 11 февраля 2012

Я допускаю странную проблему.Я применяю изображение к сетке, и оно разрезает изображение путем преобразования экрана, а не логически.При 1280 x 800 это выглядит так: link to image

, а когда это 800 x 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);

Ответы [ 2 ]

3 голосов
/ 11 февраля 2012

Проблема:

myStackPanel.Children.Add(myImage);

Не используйте StackPanel, если вы хотите, чтобы изображение было правильно изменено (почему в любом случае есть StackPanel, если в нем больше ничего нет?), Здесь оно просто переполнится и обрежется. Существуют различные другие панели , например, Grids, которые лучше подходят для этого.

2 голосов
/ 11 февраля 2012

Программа делает именно то, что вы говорите. Вы используете StackPanel, что означает, что все элементы в нем будут «сложены». По умолчанию ориентация StackPanel является вертикальной, что означает, что второй элемент управления расположен ниже первого, третий - под вторым и т. Д. И все они используют всю доступную им ширину.

В вашем случае это означает, что изображение растянуто по ширине окна. Если его высота не подходит, дно будет отрезано. В противном случае, если высота окна будет слишком большой, под изображением будет пустое пространство.

Самый простой способ увидеть это - не максимизировать окно и попытаться изменить размер окна.

Если вам не нужно это поведение, вы можете использовать разные панели, например Grid, например H.B. предлагается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...