【问题标题】:One of three PictureBoxes does not update三个 PictureBox 之一不更新
【发布时间】:2012-12-02 02:32:42
【问题描述】:

背景:

我的程序是实时视频 winform 应用程序。我的表格上有三个PictureBox。这些图片框会根据其父窗体大小自动调整大小。我的程序中的一个线程使用安全的Invoke 方法使用来自 30 fps 相机的三个 2048x2048 图像更新这些图片框。

问题:

当表单足够小时,所有三个图片框都可以正常显示,尽管有问题的图片框比其他图片框慢一点。但是如果表格变大,只有一个图片框没有更新,而其他两个更新得很好。仅供参考,这些照片同时被推入像素盒。这可能听起来很傻,但有问题的图片框看起来有缺陷

问题:

我想了解为什么会出现这种症状 - 相同大小的图片框同时获得相同大小的图像,但只有一个没有更新。这是显卡问题吗?有没有办法解决这个问题?

【问题讨论】:

  • 我会尝试交换框名称 - 问题是遵循名称(/变量)还是遵循创建顺序?可能会给你一个线索去哪里看。
  • 你能粘贴代码吗?我猜你正在使用表单大小调整事件?
  • @CarlosLande 不,我没有使用表单调整大小。我只是使用 TableLayoutPanel 和 Anchor 来调整图片框的大小作为表单调整大小。
  • 这听起来很愚蠢,但您可以尝试使用其他图片资源来确保问题不在图片本身吗?
  • 尝试使用简单的 control.Refresh() 如果这不起作用,我会尝试更新其他线程中的控件

标签: c# winforms


【解决方案1】:

尝试使用c#开源ispy软件http://www.ispyconnect.com/

【讨论】:

    【解决方案2】:

    更新:

    因为我认为这是表单刷新的问题,所以我创建了一个线程来定期刷新我的表单。而且我认为不更新的问题已经解决了。

        private void MyForm_Load(object sender, EventArgs e)
        {
            Thread thread = new Thread(() =>
            {
                while (!m_bFormClose)
                {
                    this.SafeInvoke(Refresh);
                    Thread.Sleep(500);
                }
            });
            thread.Start();
        }
    

    我想我可以用计时器来做到这一点,但我觉得用线程更安全。如果您有更好的方法,请评论或回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 2017-03-12
      • 2016-11-10
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多