C# 想用Timer控件,将数据库中的图片每隔10秒,显示一张出来,请大家帮助
C# 想用Timer控件,将数据库中的图片每隔10秒,显示一张出来,请大家帮助各位高手,大家好:
我在FORM窗体中,放置了Picturebox控件和Timer控件,想通过Timer,每隔10秒将数据库中的图片显示一张出来在picturebox控件中。
注:数据库中的图片字段是图片的链接地址,另外,数据库中的图片有很几千张。
问题:如何用Timer实现?
另外,如果一直等着显示,数据库连接一直连着,如果用户数大了,那么多连接不关闭,是不是占用资源很大啊?如何解决呢?
高手指点啊!
--------------------编程问答-------------------- list<img> lst=new list(img)
先用一个list<img>集合 存放所有图片
img指图片
然后数据库就可以关了
timer空间里面写:
for(int i=0;i<lst.count;i++)
{
this.pictruebox.image=image.fromfile(i);
} --------------------编程问答-------------------- 先把数据读出。再显示了。 --------------------编程问答-------------------- 几千个链接一起读出来就行了。
然后象一楼那样在Timer里写个循环。
--------------------编程问答-------------------- 先用一个List把图片取出来
然后再Timer里面写事件
for(int i=0;i <List.count;i++)
{
pictruebox.image=XXXXX;
} --------------------编程问答-------------------- 大家 都说了 呵呵
话说 每天回帖的10分的说 那我就 混了 呵呵 --------------------编程问答-------------------- 你将定时器设置10秒钟刷一次屏,
没刷一次屏,你改变一些图片的路径就ok了 --------------------编程问答-------------------- 恩,我还从没用过图片控件的,呵呵,受教了 --------------------编程问答-------------------- --------------------编程问答-------------------- 一次性读取所有连接
保存在集合中
timer控件每10秒触发一次事件
将集合中的连接Next(); --------------------编程问答-------------------- 把图片放在ImageList, 在计时器里写下如下代码:
private void timer1_Tick(object sender, EventArgs e)
{
this.myPictureBox.Image=myImageList.Images[i];
time.Text = Convert.ToString(i);
i++;
} --------------------编程问答-------------------- 或许还有得分的机会。
首先,拖一个timer到窗体上,设置每隔10秒换图片。也就是设置Interval为10000,设置Enable为true。
个人认为用imagelist比较好,就用不上数据库了,直接把图片放到imagelist的images属性里。在写上计时器的代码就好了。
下面是计时器的代码:
private void timer1_Tick(object sender, EventArgs e)
{
if (index < imageList1.Images.Count - 1)
{
index++;
}
else
{
index = 0;
}
pictureBox1.Image = imageList1.Images[index];
} --------------------编程问答-------------------- 这样一次性读取那么多图片,会不会很占内存啊? --------------------编程问答-------------------- 大家说的基本上都可以.... --------------------编程问答-------------------- 估计解决了 楼主结贴吧 我来接分咯 呵呵... --------------------编程问答-------------------- 基本思路就是在timer里加个循环 调用图片,最好把图片放到一个图片组里 方便调用 --------------------编程问答-------------------- 哈哈 大家都把方法说完了 来混点分…… --------------------编程问答--------------------
public partial class Form1 : Form--------------------编程问答-------------------- 哎,把所有的图片存放地址放到一个数据里,每隔十秒赋给PictrueBox里就Ok了。。。
{
private bool isTrue = true;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
timer1.Interval = 200;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (label1.Right >= this.Width)
{
isTrue = false;
}
if (label1.Left <= 0)
{
isTrue = true;
}
if (isTrue)
{
label1.Left += 10;
}
else
{
label1.Left -= 10;
}
}
}
--------------------编程问答-------------------- 很好 很强大…… --------------------编程问答-------------------- 先从数据库中把图片链接(也就是路径)读取到List<string> 中 ,然后 用Timer 隔十秒刷新就可以了吧。 --------------------编程问答-------------------- 如果图片量很大的话,估计挺耗内存的。应该针对具体情况有所取舍
//把他放在Timer时间里,你10秒就要注意设置Interval为10000
string [] arrAddress=new string [];
//给它赋值后
for (string strAddress in arrAddress)
{
this.pictureBox1.Image = Image.FromFile(strAdderss);
}
1、图片量较少,可以一次性读入内存中显示.
2。量大建议建立个零时文件夹,一次下载图片后直接读本地文件图片显示。
--------------------编程问答-------------------- 顶
--------------------编程问答-------------------- http://topic.csdn.net/u/20091115/14/80265c2f-4ab3-4d5d-8cd0-c8cba0887914.html --------------------编程问答-------------------- "把图片放在ImageList"总共几千张图片,会不会很慢? --------------------编程问答-------------------- 打酱油 --------------------编程问答-------------------- 呵呵!chentian5201931回复的够完整的了!我刚好也有用! --------------------编程问答-------------------- winform直接连数据库,很多用户的话,肯定数据库吃不消 --------------------编程问答-------------------- 实时定时器,需要注意定时器定时器启动了,设置enable=false,执行完后再true,要不然系统资源消耗很大,甚至累趴下。 --------------------编程问答-------------------- 使用定时器,需要注意定时器启动了,设置enable=false,执行完后再true,要不然系统资源消耗很大,甚至累趴下。 --------------------编程问答-------------------- lz有没有什么特别的需求,如果图片是随机的,或者没有什么顺序可言,大可以每次读个一百张图片,等到这一百张用完了,在去数据库读取...这种解决方案应该不是很耗内存的... --------------------编程问答-------------------- public partial class Form1 : Form
{
private bool isTrue = true;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
timer1.Interval = 200;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (label1.Right >= this.Width)
{
isTrue = false;
}
if (label1.Left <= 0)
{
isTrue = true;
}
if (isTrue)
{
label1.Left += 10;
}
else
{
label1.Left -= 10;
}
}
} --------------------编程问答-------------------- 首先你要先定义一个private int index
然后在form4里添加timer1,picturebox1,再添加一个imageList1
code如下
private int index;
private void Form4_Load(object sender, EventArgs e)
{
textBox1.Text = DateTime.Now.ToString("h:mm:ss");
timer1.Enabled = true;
timer1.Interval = 2000;
}
private void timer1_Tick(object sender, EventArgs e)
{
{
timer1.Enabled = false;
if (index < imageList1.Images.Count - 1)
{
index++;
}
else
{
index = 0;
}
pictureBox1.Image = imageList1.Images[index];
timer1.Enabled = true;
}
} --------------------编程问答-------------------- --------------------编程问答-------------------- 第一次读取100个,第二次读取另外100个,怎么解决每次读取的都不重复呢?
--------------------编程问答-------------------- 做成BS模式么,不就没有那么多站点了,服务器可以预加载图片,并定时与数据库同步
补充:.NET技术 , C#