C#表单应用程序图片框图

时间:2017-01-17 04:35:45

标签: c# picturebox

我在表单上有两个图片框,每个图片框都是由其他线程委派的事件更新的。

当我只更新其中一个图片盒时,它正在重新绘制高频率(54-60Hz)。当我按照预期更新两个图片框时,刷新率会变慢,但不同图片的OnPaint方法会以非常不同的速率调用(6Hz对45-47Hz)。

这是事件的提升方式。

class WorkingThread {

    protected event EventHandler<OutputImageUpdateArgs> NewImageAvailable;
    protected 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;}
        ) );
    }
}

我想知道两件事:

  1. 为什么两个图片框的刷新率如此不同?
  2. 我可以控制重绘图片框的时间,以便我只能以固定的间隔重绘两张图片吗?我想我应该能够为每个25Hz进行绘画,因为我可以在当前大约50Hz处绘制两者的总和。

0 个答案:

没有答案