将 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
。
我有一个后台线程来检查硬件设备(相机)的通信状态,并相应地用绿色圆圈或红色 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
。