将 PictureBox 的图像设置为相同的图像会强制重绘吗?

Does setting the image of a PictureBox to the same image force a redraw?

我有一个后台线程来检查硬件设备(相机)的通信状态,并相应地用绿色圆圈或红色 X 更新我表单上的图像。

public bool cameraStatus;

public MainForm()
{
   InitializeComponent();

   // add the UpdateDisplay function to a dictionary that will be periodically called
   updateMethods.Add(new EventHandler(UpdateDisplay));
}

public void UpdateDisplay()
{
   if (cameraStatus)
      imgCameraStatus.Image = Properties.Resources.camera_good;
   else
      imgCameraStatus.Image = Properties.Resources.camera_bad;
}

UpdateDisplay 函数经常被调用,每次 50 毫秒左右。大部分时间 cameraStatus 不会更改,因此 imgCameraStatus.Image 一直设置为相同的值。

图像没有闪烁,我想知道图像是否真的每次都被 window 重新绘制,因为源没有改变。我不确定如何在 WinForms 绘制周期中调用较低级别的绘制函数。

查看 the source code,设置 Image 属性 调用名为 InstallNewImage 的私有方法。此方法将始终调用 Invalidate,这将安排重绘消息队列中的 PictureBox