c# 脚本中的逻辑问题,其中图像以网格类型外观加载
Problems with logic in c# script where images are loaded in a grid type look
我有未知数量的图像,我正在使用代码添加到网格控件中,并且我有点迷失在逻辑中,因为图像以错误的顺序插入。看看(模数是这样的,因为测试):
grid.Height = this.Height;
grid.Width = this.Width;
grid.ShowGridLines = true;
for (int i = 0; i < 50; i++)
{
RowDefinition rowDef = new RowDefinition();
rowDef.Height = new GridLength(50);
grid.RowDefinitions.Add(rowDef);
ColumnDefinition colDef = new ColumnDefinition();
colDef.Width = new GridLength(50);
grid.ColumnDefinitions.Add(colDef);
}
int x = 1;
int y = 1;
for (int i = 0; i < 50; i++)
{
y++;
if (i % 10 == 0)
{
x++;
y = 1;
}
Image img = new Image() { Source = new BitmapImage(new Uri("Images/positive.png",UriKind.Relative)), Width = 50, Height = 50, Margin = new Thickness(2,2,2,2) };
grid.Children.Add(img);
Grid.SetRow(img, x);
Grid.SetColumn(img, y);
}
结果:
如您所见,图像按照模数表示每 10 张图像从新行开始,但它们不是从第一列的第一行开始。
我想要实现的是:
我做错了什么?谢谢!
在循环的第一次迭代中,i 为 0。
(0 % 10 == 0) // true
所以 x 立即加 1。
在 for
循环的开头设置一个断点并跟随执行。在这种情况下,您会立即看到它。
如下设置初始值应该可以解决您的问题。
int x = -1;
int y = -1;
如果你应该试试里面的话
if (i % 10 == 0)
{
x++;
y = 0;
}
我有未知数量的图像,我正在使用代码添加到网格控件中,并且我有点迷失在逻辑中,因为图像以错误的顺序插入。看看(模数是这样的,因为测试):
grid.Height = this.Height;
grid.Width = this.Width;
grid.ShowGridLines = true;
for (int i = 0; i < 50; i++)
{
RowDefinition rowDef = new RowDefinition();
rowDef.Height = new GridLength(50);
grid.RowDefinitions.Add(rowDef);
ColumnDefinition colDef = new ColumnDefinition();
colDef.Width = new GridLength(50);
grid.ColumnDefinitions.Add(colDef);
}
int x = 1;
int y = 1;
for (int i = 0; i < 50; i++)
{
y++;
if (i % 10 == 0)
{
x++;
y = 1;
}
Image img = new Image() { Source = new BitmapImage(new Uri("Images/positive.png",UriKind.Relative)), Width = 50, Height = 50, Margin = new Thickness(2,2,2,2) };
grid.Children.Add(img);
Grid.SetRow(img, x);
Grid.SetColumn(img, y);
}
结果:
如您所见,图像按照模数表示每 10 张图像从新行开始,但它们不是从第一列的第一行开始。
我想要实现的是:
我做错了什么?谢谢!
在循环的第一次迭代中,i 为 0。
(0 % 10 == 0) // true
所以 x 立即加 1。
在 for
循环的开头设置一个断点并跟随执行。在这种情况下,您会立即看到它。
如下设置初始值应该可以解决您的问题。
int x = -1;
int y = -1;
如果你应该试试里面的话
if (i % 10 == 0)
{
x++;
y = 0;
}