C#-如何在每次重新绘制图片框时不重新绘制图像

C#-如何在每次重新绘制图片框时不重新绘制图像,c#,winforms,image,picturebox,repaint,C#,Winforms,Image,Picturebox,Repaint,我有一个图片框,里面有一些永远不需要移动的图片。这是给地图设计师的。用户选择地图将有多少列和行,然后将其绘制为线网格,我有一个mouseMove方法,因为当用户悬停在单元格边缘时,它需要高亮显示红色。因此,当鼠标移动时,地图将持续快速地重新绘制。当我在地图上为行和列绘制了绘图线时,这不是问题。但是现在我刚刚添加了一个单元格背景图像,单元格背景图像在鼠标移动时闪烁,因为它们被重新绘制得太快了 谢谢你的帮助。谢谢 寻找“双缓冲”。这应该可以消除闪烁或撕裂,尽管更智能的算法本身可以减少重新绘制的区域。

我有一个图片框,里面有一些永远不需要移动的图片。这是给地图设计师的。用户选择地图将有多少列和行,然后将其绘制为线网格,我有一个
mouseMove
方法,因为当用户悬停在单元格边缘时,它需要高亮显示红色。因此,当鼠标移动时,地图将持续快速地重新绘制。当我在地图上为行和列绘制了
绘图线时,这不是问题。但是现在我刚刚添加了一个单元格背景图像,单元格背景图像在鼠标移动时闪烁,因为它们被重新绘制得太快了


谢谢你的帮助。谢谢

寻找“双缓冲”。这应该可以消除闪烁或撕裂,尽管更智能的算法本身可以减少重新绘制的区域。谢谢,但在鼠标移动时不会减少。需要一个更智能的算法。我只是想把细胞背景放在另一个只在需要的时候才绘制的图片框中。我会在有时间的时候尽快尝试。使用双缓冲应该独立于鼠标移动,因为它的工作原理很自然——它不会处理由开关引起的闪烁,但这是一个风格设计问题,而不是实现问题。请确保仅在“绘制”事件中更新,而不在“鼠标移动”事件中更新。@user2246674如果我不在“鼠标移动”事件中更新,则当鼠标悬停在线条上方时,线条将如何变为红色?