0

我是 C# 的新手,我想使用 Windows 窗体在 C# 中创建类似落雪(点)的东西。

我已经能够在屏幕顶部创建雪花(我想每隔 0,1 秒创建一个新点,在 Form 的随机 x 位置,并将每个雪花的位置写到 List(Point) 中,并且每一个 Tick计时器(0,1s)我希望雪花将其位置向下改变 3px,向右改变 1-3px)

但是我在刷新雪花位置时遇到了问题。我不知道如何访问列表中的每个雪花以随机化其新位置。我尝试了 foreach,但它给了我错误,说我无法更改 foreach 中的变量。

例子:

foreach (var snowflake in snowflakeList)            
            {
               snowflake.Y += 3;
               snowflake.X += moveRandom.Next(1, 4);
            }

谁能告诉我如何将雪花列表(点)划分为单个雪花,以便我可以分别更改每个点的位置?

谢谢 :-)

4

2 回答 2

0

正如安德鲁斯的回答使用 for 循环,但由于列表是 Points (一种值类型),您需要直接引用列表中的 Point 而不是复制它:

for (int i = 0; i < snowflakeList.Count; i++)            
{
    snowflakeList[i].Y += 3;
    snowflakeList[i].X += moveRandom.Next(1, 4);
}
于 2012-11-01T16:37:06.933 回答
0

最简单的方法就是使用集合的索引:

for (int i = 0; i < snowflakeList.Count; i++)            
{
    var snowflake = snowflakeList[i];
    snowflake.Y += 3;
    snowflake.X += moveRandom.Next(1, 4);
    snowflakeList[i] = snowflake;
}
于 2012-11-01T16:10:59.787 回答