小弟的源码如下:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
this.setTop = this.setPictureBoxTop;
this.setTWH = this.setPictureBoxTWH;
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Image aa = pictureBox1.Image;
pictureBox1.ErrorImage = aa;
//启动五个线程分别对PictureBox进行操作(改变Top的值,并将图像保存)
Thread t1 = new Thread(new ThreadStart(pictureview1));
Thread t2 = new Thread(new ThreadStart(pictureview2));
Thread t3 = new Thread(new ThreadStart(pictureview3));
Thread t4 = new Thread(new ThreadStart(pictureview4));
Thread t5 = new Thread(new ThreadStart(pictureview5));
exit.Reset();
t1.Start();
t2.Start();
t3.Start();
t4.Start();
t5.Start();
}
public delegate void controlAxtiveDelegate2(int top);//定义一个委托
//在定义一个委托变量:
private controlAxtiveDelegate2 setTop; private void setPictureBoxTop(int top)
{
pictureBox1.Top = top;
pictureBox1.Refresh();
} private void pictureBoxInvoke(int top)
{
lock (pic_obj)
{
if (pictureBox1.IsHandleCreated)
{
pictureBox1.Invoke(setTop, top);
}
}
}
private static object pic_obj = new object(); private static EventWaitHandle exit = new EventWaitHandle(false, EventResetMode.ManualReset);
private void pictureview1()
{
while (true)
{
if (exit.WaitOne(0, false))
{
break;
}
pictureBoxInvoke(100);//委托给主线程改变pictureBox.Top = 100;
lock (pic_obj)
{
try
{
Image img = pictureBox1.Image;
string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ee)
{
MessageBox.Show("保存图像模块1" + ee.ToString());
}
}
Thread.Sleep(50);
}//while
}
private void pictureview2()
{
while (true)
{
if (exit.WaitOne(0, false))
{
break;
}
pictureBoxInvoke(10);
lock (pic_obj)
{
try
{
Image img = pictureBox1.Image;
string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ee)
{
MessageBox.Show("保存图像模块2" + ee.ToString());
}
}
Thread.Sleep(50);
}//while
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
this.setTop = this.setPictureBoxTop;
this.setTWH = this.setPictureBoxTWH;
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Image aa = pictureBox1.Image;
pictureBox1.ErrorImage = aa;
//启动五个线程分别对PictureBox进行操作(改变Top的值,并将图像保存)
Thread t1 = new Thread(new ThreadStart(pictureview1));
Thread t2 = new Thread(new ThreadStart(pictureview2));
Thread t3 = new Thread(new ThreadStart(pictureview3));
Thread t4 = new Thread(new ThreadStart(pictureview4));
Thread t5 = new Thread(new ThreadStart(pictureview5));
exit.Reset();
t1.Start();
t2.Start();
t3.Start();
t4.Start();
t5.Start();
}
public delegate void controlAxtiveDelegate2(int top);//定义一个委托
//在定义一个委托变量:
private controlAxtiveDelegate2 setTop; private void setPictureBoxTop(int top)
{
pictureBox1.Top = top;
pictureBox1.Refresh();
} private void pictureBoxInvoke(int top)
{
lock (pic_obj)
{
if (pictureBox1.IsHandleCreated)
{
pictureBox1.Invoke(setTop, top);
}
}
}
private static object pic_obj = new object(); private static EventWaitHandle exit = new EventWaitHandle(false, EventResetMode.ManualReset);
private void pictureview1()
{
while (true)
{
if (exit.WaitOne(0, false))
{
break;
}
pictureBoxInvoke(100);//委托给主线程改变pictureBox.Top = 100;
lock (pic_obj)
{
try
{
Image img = pictureBox1.Image;
string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ee)
{
MessageBox.Show("保存图像模块1" + ee.ToString());
}
}
Thread.Sleep(50);
}//while
}
private void pictureview2()
{
while (true)
{
if (exit.WaitOne(0, false))
{
break;
}
pictureBoxInvoke(10);
lock (pic_obj)
{
try
{
Image img = pictureBox1.Image;
string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ee)
{
MessageBox.Show("保存图像模块2" + ee.ToString());
}
}
Thread.Sleep(50);
}//while
}
解决方案 »
- VS2005 换了win7系统 项目运行异常
- FTP读取列表是什么格式的?中文读出来是乱码
- 请问大虾:如何让把winform中单选按钮的值写进数据库?
- c#做winform开发的基本问题,大家都看看
- 我的窗体没有了焦点,why?
- 在本地IIS可以浏览的网站传到网上居然出错
- 如何得到小数部分和整数部分--要求比较怪并且还没分?
- 本人刚学c#请问各位在.NET中,COM+还有作用吗?
- 菜鸟送分!!在SQL连接串中有一个这样的字符串,是什么意思呀?
- c#怎样将DataSet取出的xml字符串结合一个已知的xslt,输出到ie????
- xml修改存在一模一样相同元素问题,这样这样永远是第一条数据????,问题没有解决,要不十一要加班了?
- 退出程序用哪个方法?
{
while (true)
{
if (exit.WaitOne(0, false))
{
break;
}
pictureBoxInvoke(40);
lock (pic_obj)
{
try
{
Image img = pictureBox1.Image;
string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ee)
{
MessageBox.Show("保存图像模块3" + ee.ToString());
}
}
Thread.Sleep(50);
}//while
}
private void pictureview4()
{
while (true)
{
if (exit.WaitOne(0, false))
{
break;
}
pictureBoxInvoke(20);
lock (pic_obj)
{
try
{
Image img = pictureBox1.Image;
string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ee)
{
MessageBox.Show("保存图像模块4" + ee.ToString());
}
}
Thread.Sleep(50);
}//while
}
private void pictureview5()
{
while (true)
{
if (exit.WaitOne(0, false))
{
break;
}
pictureBoxInvoke(90);
lock (pic_obj)
{
try
{
Image img = pictureBox1.Image;
string imgStr = folder + @"\" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
img.Save(imgStr, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ee)
{
MessageBox.Show("保存图像模块5" + ee.ToString());
}
}
Thread.Sleep(50);
}//while
}
//多个参数
public delegate void controlAxtiveDelegate3(int[] value);//定义一个的委托
//在定义一个委托变量:
private controlAxtiveDelegate3 setTWH; private void setPictureBoxTWH(int[] value)
{
try
{
lock (pic_obj)
{
pictureBox1.Top = value[0];
pictureBox1.Width = value[1];
pictureBox1.Height = value[2];
pictureBox1.Refresh();
}
}
catch (Exception ee)
{
MessageBox.Show("setPictureBoxTWH" + ee.ToString());
}
} private void pictureBoxTWHInvoke(int[] top)
{
try
{
this.pictureBox1.Invoke(setTWH, top);
}
catch (Exception ee)
{
MessageBox.Show("pictureBoxTWHInvoke" + ee.ToString());
}
} private void button2_Click(object sender, EventArgs e)
{
exit.Set();
} private string folder = "";
private void button3_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
folder = folderBrowserDialog1.SelectedPath;
textBox1.Text = folder;
}
} private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
foreach (System.Diagnostics.Process pp in System.Diagnostics.Process.GetProcessesByName("WindowsApplication1.vshost"))
{
pp.Kill();
}
foreach (System.Diagnostics.Process pp in System.Diagnostics.Process.GetProcessesByName("WindowsApplication1"))
{
pp.Kill();
}
}
}
}
用IMAGELIST和TIMER控件就可以搞定的。