【问题标题】:Foreach loop with images带图像的 Foreach 循环
【发布时间】:2015-02-11 21:12:10
【问题描述】:

我有一个 80 PNG 图像序列,我正在尝试为我的 Windows 应用程序创建动画。文件路径是 Assets/Star/,我试图弄清楚如何为文件夹中的每个图像创建一个 foreach 循环,因此它将图像对象设置为 Image1,然后在计时器经过一定数量的滴答声后它会将其更改为 Image2 等等,这是我目前所拥有的:

private void SubmitButton_Click(object sender, RoutedEventArgs e)
   {
      if(LevelUp == true)
        {
            string ImagePath = "Assets/Star/";
            foreach (Image item in ImagePath)
            {

            }
        }
   }

但是我不认为我正确地接近它,有谁知道我应该如何接近它?

【问题讨论】:

  • 你的计时器在哪里?
  • 你不应该使用一个简单的 GIF 而不是 80 个不同的 PNG 吗?
  • 也许他想要高质量的颜色..
  • 你需要一个 Timer 并且需要编写它的 Tick 事件。按钮只会启动 Timer(可能还准备一个 ImageList)
  • @Pierre-LucPineault PNG 会更受欢迎,因为它的质量很好

标签: c# winapp


【解决方案1】:

只需await Task.Delay 异步等待一段时间:

private async void SubmitButton_Click(object sender, RoutedEventArgs e)
{
    if (LevelUp)
    {
        string imagePath = "Assets/Star/";
        foreach (Image image in GetImages(imagePath))
        {
            ShowImage(image);
            await Task.Delay(timeToWait);
        }
    }
}

【讨论】:

  • 有没有办法设置时间跨度?
  • @JermainDefo 是的,当然有。在此示例中,timeToWait 是一个指定等待时间的变量。将其设置为您想要的任何内容。
  • 哇!我没想到会那么容易!那么 await Task.Delay 是定时器本身吗?换句话说,这将是解决方案?
  • @JermainDefo Task.Delay 在内部使用计时器来创建将在指定延迟后完成的Task。您无需直接与该计时器交互。
  • GetImages 无法识别。我有一条错误提示“当前上下文中不存在名称 GetImages”你知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
相关资源
最近更新 更多