C# 你必须每秒钟改变一次背景图像吗?
两个月前我刚开始学习c#,我在当前项目(windows窗体)中获得了以下代码,用于设置背景图像:C# 你必须每秒钟改变一次背景图像吗?,c#,C#,两个月前我刚开始学习c#,我在当前项目(windows窗体)中获得了以下代码,用于设置背景图像: public FormMain() { this.BackgroundImage = Properties.Resources.image; InitializeComponent(); var timer = new Timer(); ////change the background image every seco
public FormMain()
{
this.BackgroundImage = Properties.Resources.image;
InitializeComponent();
var timer = new Timer();
////change the background image every second
timer.Interval = 1000;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
//add image in list from resource file.
List<Bitmap> lisimage = new List<Bitmap>();
lisimage.Add(Properties.Resources.image);
var indexbackimage = DateTime.Now.Second % lisimage.Count;
this.BackgroundImage = lisimage[indexbackimage];
}
public FormMain()
{
this.BackgroundImage = Properties.Resources.image;
InitializeComponent();
}
因为它似乎起作用了 如果您要通过一系列图像进行迭代来创建动画,则只需要这样一个计时器
您所拥有的足以设置一次图像。如果您正在迭代一系列图像以创建动画,您只需要这样一个计时器
你所拥有的足以设置一次图像。正如AaronLS所写,设置一次背景就足够了。我会更进一步,解释为什么您的额外代码没有什么意义(假设这是整个代码)
void timer\u Tick(对象发送方,事件参数e)
{
//从资源文件在列表中添加图像。
List lisimage=new List();//此行创建一个新列表
lisimage.Add(Properties.Resources.image);//用资源中的一个图像填充新创建的列表
//请注意,资源通常是静态的,因此它始终是相同的资源
var indexbackimage=DateTime.Now.Second%lisimage.Count;//从列表中选择一个索引,但列表仅包含该图像,因此该索引将始终为0
this.BackgroundImage=lisimage[indexbackimage];//选择最初设置的相同图像
}
正如您所看到的,代码是相当荒谬的-它没有做任何事情。似乎有人想创造一种机制,每秒钟切换一次图像,但即使是这样,编码也很糟糕。正如AaronLS所写,只需设置一次背景就足够了。我会更进一步,解释为什么您的额外代码没有什么意义(假设这是整个代码)
void timer\u Tick(对象发送方,事件参数e)
{
//从资源文件在列表中添加图像。
List lisimage=new List();//此行创建一个新列表
lisimage.Add(Properties.Resources.image);//用资源中的一个图像填充新创建的列表
//请注意,资源通常是静态的,因此它始终是相同的资源
var indexbackimage=DateTime.Now.Second%lisimage.Count;//从列表中选择一个索引,但列表仅包含该图像,因此该索引将始终为0
this.BackgroundImage=lisimage[indexbackimage];//选择最初设置的相同图像
}
正如您所看到的,代码是相当荒谬的-它没有做任何事情。似乎有人想创建一种机制,每秒切换一次图像,但即使这样,编码也很糟糕。如果只有一个图像,只需设置一次即可。第一个代码有一组循环使用的图像。@johnnymapp但是第一个代码总是在列表中添加
Properties.Resources.image
,这意味着它只是一个图像列表@Shaaman代码对我来说也没有多大意义。假设没有显示其他内容。如果只有一个图像,只需设置一次。第一个代码有一组循环使用的图像。@johnnymapp但是第一个代码总是在列表中添加Properties.Resources.image
,这意味着它只是一个图像列表@Shaaman代码对我来说也没有多大意义。假设没有显示其他内容,我也注意到了这一点,我想知道这是否是从一个最初有一个图像列表的示例中错误地改编而来的,该示例正在迭代这些图像。模运算符是返回列表开头以重放动画的一个明显的让步。我注意到,我还想知道这是否是从一个最初有一个图像列表并在其中迭代的示例中错误改编的。“模”操作符是返回列表开头以重播动画的明确放弃。
void timer_Tick(object sender, EventArgs e)
{
//add image in list from resource file.
List<Bitmap> lisimage = new List<Bitmap>(); //this line creates a new list
lisimage.Add(Properties.Resources.image); //fill the NEWLY created list with the one image from the resources
//note, that resources are usually static, so it's always the same resource
var indexbackimage = DateTime.Now.Second % lisimage.Count; //choose an index from the list, but the list only contains that one image, so the index will always be 0
this.BackgroundImage = lisimage[indexbackimage]; //pick the same image that was set initially
}