You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从硬盘加载图片并通过timer控件在pictureBox中展示

问题根因

  • 每次Timer触发Tick事件时,代码直接通过foreach遍历整个图片列表循环加载,整个循环会在极短时间内执行完成,界面没有机会完成渲染刷新,最终只会停留在列表最后一张图片,也无法实现逐张轮播的效果
  • 没有维护当前播放的索引变量,无法记录上一次Tick事件触发时加载到的图片位置

修复方案

首先在窗体类中定义两个全局索引变量,用来记录两个PictureBox的当前播放位置:

// 雷达图当前播放索引
private int radarIndex = 0;
// 卫星图当前播放索引
private int satelliteIndex = 0;

修改两个Timer的Tick事件代码:

private void timer1_Tick(object sender, EventArgs e)
{
    // 空列表直接返回避免索引越界
    if (filesRadar == null || filesRadar.Length == 0)
        return;
    
    pictureBox1.Load(filesRadar[radarIndex]);
    // 索引自增,到列表末尾后回到开头实现循环播放
    radarIndex = (radarIndex + 1) % filesRadar.Length;
}

private void timer2_Tick(object sender, EventArgs e)
{
    if (filesSatellite == null || filesSatellite.Length == 0)
        return;
    
    pictureBox2.Load(filesSatellite[satelliteIndex]);
    satelliteIndex = (satelliteIndex + 1) % filesSatellite.Length;
}

额外排查项

  • 确认Timer控件的Enabled属性已设置为true,Interval属性设置为合理值(单位为毫秒,建议设置为1000~3000,不要设置过小)
  • 确认filesRadar和filesSatellite中存储的是图片的绝对路径,且对应路径下的图片文件未损坏、可正常访问
  • 确认PictureBox控件的SizeMode属性设置为合适值,例如Zoom或StretchImage,避免因图片尺寸和控件尺寸不匹配导致看起来未加载成功

内容的提问来源于stack exchange,提问作者Daniel Lip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:54:04