1

在此处输入图像描述

我有一个问题,我试图将图像添加到网格中,但是图像被奇怪地添加了。(见图)。我正在尝试将图像连续添加,但它们被添加到第一个位置,然后添加到下一行。我是菜鸟,所以我很困惑。谢谢您的帮助。(TUtils 只是从 .ini 文件中获取值)

代码:

private void PopulateGrid()
{
    Image img = CreateImage();
    ImageSize = TUtils.GetIniInt(Moleini, "ImageSize", "imageSize", 10);
    NumofImages= TUtils.GetIniInt(Moleini, "NumPictures", "pictures", 8);
    int ImageBorderSize = TUtils.GetIniInt(Moleini, "ImageBorder", "imageBorder", 2);
    double NumberOfColumns = TUtils.GetIniInt(Moleini, "NumRowsColumns", "columnNum", 4);

    // More Columns than Rows \\
    if (NumberOfColumns > NumofImages)
    {
        MessageBox.Show("There is something wrong with the .ini file.");
        MainWin.Close();
    }

    // Math - Get Necessary Variables \\
    int ColumnSize = (ImageSize + (2 * ImageBorderSize));
    int RowSize = (ImageSize + (2 * ImageBorderSize));
    int NumberofRows = (int)Math.Ceiling(NumofImages / NumberOfColumns);
    int MainWindowWidth = (TUtils.ToInt(NumberOfColumns.ToString(), 2) * ColumnSize) + 15;
    int MainWindowHeight = (NumberofRows * RowSize) + 35;

    // Set Window Size \\
    MainWin.Width = MainWindowWidth;
    MainWin.Height = MainWindowHeight;

    // Create Grid \\
    MainWin.Content = grid_Main;
    grid_Main.Height = MainWindowHeight;
    grid_Main.Width = MainWindowWidth;
    grid_Main.Background = Brushes.Transparent;

    // Grid Properties \\
    for (int i = 0; i < NumberOfColumns; i++)
    {
        ColumnDefinition newColumn = new ColumnDefinition();
        newColumn.Width = new GridLength(ColumnSize, GridUnitType.Pixel);
        grid_Main.ColumnDefinitions.Add(newColumn);
    }

    for (int i = 0; i < NumberofRows; i++)
    {
        RowDefinition Row = new RowDefinition();
        Row.Height = new GridLength(RowSize, GridUnitType.Pixel);
        grid_Main.RowDefinitions.Add(Row);
    }

    // Fill Grid \\
    int RowCount = 0;
    int ColumnCount = 0;
    for (int i = 0; i <= NumofImages; i++)
    {
        Image newImage = CreateImage();
        if (RowCount < NumberofRows)
        {
            if (ColumnCount < NumberOfColumns)
            {
                Console.WriteLine("ColumnCount: " + ColumnCount.ToString());
                Grid.SetRow(newImage, ColumnCount);
                Grid.SetColumn(newImage, ColumnCount);
                grid_Main.Children.Add(newImage);
                ColumnCount++;
            }

            else
            {
                RowCount++;
                ColumnCount = 0;
                Grid.SetRow(newImage, ColumnCount);
                Grid.SetColumn(newImage, ColumnCount);
                grid_Main.Children.Add(newImage);
                ColumnCount++;
                Console.WriteLine("RowCount: " + RowCount.ToString());
            }
        }

        else
        {
            break;
        }


    }
}
4

1 回答 1

1

发现问题,当我应该使用“RowCount”时,我使用了“ColumnCount”

于 2013-05-27T18:40:24.103 回答