Поведение полей изображения

#c# #wpf #image #margin

#c# #wpf #изображение #поля

Вопрос:

Когда я устанавливаю поле изображения во время выполнения, оно ведет себя странно, отличается от того, когда я устанавливаю его с помощью кода xaml.

Я хочу, чтобы значение поля было (40, 16, 0, 0).

Когда я добавляю это во время выполнения, мой код выглядит следующим образом:

         System.Windows.Controls.Image proba = new System.Windows.Controls.Image();
        ImageSource imageSource = GetSlidePart(PresentationDocument.Open(path, false), 0, "rId2");
        proba.Source = imageSource;
        proba.Width = 2245721 / 9525;
        proba.Height = 2286004 / 9525;
        proba.Margin = new Thickness(40, 16, 0, 0);
        gridName.Children.Add(proba);
  

Но, когда я добавляю изображение в xaml, код в cs выглядит следующим образом:

         image1.Source = GetSlidePart(PresentationDocument.Open(path, false), 0, "rId2");
  

и код в xaml такой:

 <Window x:Class="GetInfoFromPptxFile.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="720" Width="960">

<Grid Name="gridName">
    <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="416,20,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
    <Image Height="150" HorizontalAlignment="Left" Margin="40,16,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="200" />
</Grid>
</Window>
  

Когда я запускаю свою программу, изображение 1 находится именно там, где я хочу, чтобы оно было, а изображение с именем proba — нет. Почему это происходит, когда я даю им одинаковые значения полей?

Комментарии:

1. Нам нужно больше, чем это. Изображения того, что вы хотите, и того, что вы получаете. Также: в чем заключается волшебство proba.Width = 2245721 / 9525; ? Оно отсутствует в версии XAML…

2. Исходное изображение такое же. Высота и ширина также не важны, я попытался установить ту же ширину и высь, но проблема остается.

Ответ №1:

Это потому, что вы не устанавливаете выравнивания по горизонтали и вертикали в C #.

Попробуйте добавить:

 proba.VerticalAlignment = VerticalAlignment.Top;
proba.HorizontalAlignment = HorizontalAlignment.Left;
  

и это будет выглядеть так же.