问题描述
我每秒通过USB接收30张原始图像。 (实时摄像头iamge /而不是网络摄像头)
// raw image is Format32bppPArgb Bitmap
while ( true ) // Recevie Image loop Using Task
{
...
picturebox1.Image = raw_image;
// panel1.BackgroundImage = raw_image; // or using panel to display
...
}
我更新了图片,使其看起来像视频。 当图像为15fps时,程序正常运行。 但是30fps,GUI坏了。 图像区域可以顺利刷新。 但是,如果有更改,其他组件将不会更新,从而导致问题。 (例如单选按钮,面板,标题栏等。) 当扩大图像的绘制区域时,似乎会发生这种情况。
由于在stackoverflow中引用了其他文章, 我可以检查一些相关信息,但是我无法使用Winform清楚地解决它。 似乎通过Winform很难以这种方式快速重绘。 (我不知道我是否正确。)
有没有什么好的方法或关键字可以解决此问题? 谢谢您阅读。
解决方法
我有类似的问题。当我在周围控件的任何更改上调用Refresh()
和Update()
函数时,它对我有帮助。
// Label is only example,you can user any control you like
private void ChangeLabel()
{
label1.text = "new text";
label1.Refresh();
label1.Update();
}
也许只添加其中一个功能就足够了。
,默认位图调整大小被认为很重。 “缩放模式”已更改为“无”。 调整图像大小以适合面板大小,然后再将其转换为位图。 (这种情况下,我使用opencvsharp resize / image.ToBitmap())
图像已创建并调用invalidate()。 通过面板的“ onpaint事件”中的“ Graphics.DrawImage”显示。 现在一切正常。