循环显示图片代码,图片少的时候没问题。当图片多于200张的时候。循环显示就会变得很慢。就算timer触发为1ms也很慢。请问为什么如何解决?namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int i;
List<Image> lst = new List<Image>();
DirectoryInfo di = new DirectoryInfo(@"C:\qq1");//保存图片
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
timer1.Enabled = true;
label2.Visible = false;
}
if (e.KeyCode == Keys.Enter)
{
timer1.Enabled = false;
}
if (e.KeyData == Keys.Escape) Application.Exit();
{
}
}
private void timer1_Tick(object sender, EventArgs e)
{
foreach (FileInfo fi in di.GetFiles("*.jpg"))
{
lst.Add(Image.FromFile(fi.FullName));
}
if (i>=lst.Count)
{
i = 0;
}
else
{
this.pictureBox1.Image = lst[i];
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
i = i + 1;
}
}
private void Form1_Load(object sender, EventArgs e)
{
//this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
//this.WindowState = FormWindowState.Maximized;
pictureBox1.Left = 312;
pictureBox1.Top = 184;
} }
}
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int i;
List<Image> lst = new List<Image>();
DirectoryInfo di = new DirectoryInfo(@"C:\qq1");//保存图片
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
timer1.Enabled = true;
label2.Visible = false;
}
if (e.KeyCode == Keys.Enter)
{
timer1.Enabled = false;
}
if (e.KeyData == Keys.Escape) Application.Exit();
{
}
}
private void timer1_Tick(object sender, EventArgs e)
{
foreach (FileInfo fi in di.GetFiles("*.jpg"))
{
lst.Add(Image.FromFile(fi.FullName));
}
if (i>=lst.Count)
{
i = 0;
}
else
{
this.pictureBox1.Image = lst[i];
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
i = i + 1;
}
}
private void Form1_Load(object sender, EventArgs e)
{
//this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
//this.WindowState = FormWindowState.Maximized;
pictureBox1.Left = 312;
pictureBox1.Top = 184;
} }
}
解决方案 »
- 颜色选择框
- c#模拟点击按钮数据抓取
- C#如何得到指定软件的安装路径
- 关于SQL数据库中删除记录后标志列的排序问题
- 捕获异常遇到的问题?
- 提问散分!
- 不同项目之间引用,程序集不能自动更新?
- ************************一个很难的问题,请问两个窗体之间如何发送按键呀*****************************************
- 这b/s的oa后台的树状菜单怎么不能显示了?请问有哪些原因啊?谢谢!
- 我安装了 Rose xde for vs.net 后, 在vs.net右击项目选择同步出错:XDE RTE不能执行这个命令
- c# 总分店 数据传输问题
- c# 开发IE浏览器
{
if(lst.Count==0)
{
foreach (FileInfo fi in di.GetFiles("*.jpg"))
{
lst.Add(Image.FromFile(fi.FullName));
}
}
........
{
FileInfo fi = new FileInfo(f);
}
文件太多,分文件夹保存
{
lst.Add(Image.FromFile(fi.FullName));
}
不要在timer_click中
{
lst.Add(Image.FromFile(fi.FullName));
} 最终会OutOfMemory!
你完全可以考虑放到其他方法里一次性加载完这些图片,1#这样判断一次也是可以的.
to :Anakin_Skywalker
我也感觉还是异步好
{
lst.Add(Image.FromFile(fi.FullName));
} 每次都获取了一次目录这样不好
建议 在 使用前 把所有文件列表存入数组 便利数组
{
if(lst.Count==0)
{
foreach (FileInfo fi in di.GetFiles("*.jpg"))
{
lst.Add(Image.FromFile(fi.FullName));
}
}
........
{
lst.Add(Image.FromFile(fi.FullName));
} 每次都获取了一次目录这样不好
建议 在 使用前 把所有文件列表存入数组 便利数组