C#表格应用图片盒图纸
我在表单上有两个图片框,每个图片框都由其他线程委派的事件进行更新 当我只更新其中一个PictureBox时,它正在以高频(54-60Hz)重新绘制。当我更新两个pictureboxes时,正如预期的那样,的刷新速度会减慢,但是不同图片的OnPaint方法的调用速度非常不同(6Hz vs 45-47Hz) 这就是事件发生的方式C#表格应用图片盒图纸,c#,picturebox,C#,Picturebox,我在表单上有两个图片框,每个图片框都由其他线程委派的事件进行更新 当我只更新其中一个PictureBox时,它正在以高频(54-60Hz)重新绘制。当我更新两个pictureboxes时,正如预期的那样,的刷新速度会减慢,但是不同图片的OnPaint方法的调用速度非常不同(6Hz vs 45-47Hz) 这就是事件发生的方式 class WorkingThread { protected event EventHandler<OutputImageUpdateArgs> N
class WorkingThread {
protected event EventHandler<OutputImageUpdateArgs> NewImageAvailable;
protected void OnNewImageAvailable(OutputImageUpdateArgs e )
{
NewImageAvailable.Invoke(this, e );
}
...
SomeFunction(){
...
OnNewImageAvailable( tmp );
}
}
类读取{
受保护的事件处理程序NewImageAvailable;
受保护的void OnNewImageAvailable(OutputImageUpdateArgs e)
{
NewImageAvailable.Invoke(this,e);
}
...
SomeFunction(){
...
OnNewImageAvailable(tmp);
}
}
这在UI类/线程中
class UI{
SomeInitialisationFunction(){
...
pass in the new event handle to the worker threads..
.. new EventHandler<OutputImageUpdateArgs>( OnNewImageAvailable )
new EventHandler<OutputImageUpdateArgs>( OnSecondImageAvailable)...
}
void OnNewImageAvailable(object sender, OutputImageUpdateArgs e ) {
BeginInvoke((Action)(()=> {pictureBox1.Image = e.NewImage;}
));
}
void OnSecondImageAvailable ( object sender, OutputImageUpdateArgs e ) {
BeginInvoke( (Action)(() => {pictureBox2.Image = e.NewImage;}
) );
}
}
类用户界面{
SomeInitialisationFunction(){
...
将新事件句柄传递给工作线程。。
..新的事件处理程序(OneWimageAvailable)
新的事件处理程序(OnSecondImageAvailable)。。。
}
void OnNewImageAvailable(对象发送方,OutputImageUpdateArgs e){
BeginInvoke((操作)(()=>{pictureBox1.Image=e.NewImage;}
));
}
void OnSecondImageAvailable(对象发送方,OutputImageUpdateArgs e){
BeginInvoke((操作)(()=>{pictureBox2.Image=e.NewImage;}
) );
}
}
我想知道两件事: