检查是否已修改位图

时间:2013-11-25 22:26:41

标签: c# bitmap

我有一个包含Bitmap的类,我想知道位图是否已被更改(通过SetPixel或GDI +)。

我不需要确切知道它何时发生,我只需要一种方法来判断自上次检查以来是否已经发生过。

现在,我假设Bitmap类中尚未包含类似的内容,那么解决此问题的最佳方法是什么?

我可以为GetPixel和SetPixel提供我自己的包装函数,但后来我不知道是否使用GDI更改了位图。我也可以为它做一个包装,但这看起来真的是一个巨大的矫枉过正。

另一种可能的选择是保存副本然后逐像素检查。这显然是有效的,写起来也很简单但是对我的需求来说太慢了。

1 个答案:

答案 0 :(得分:1)

您应该使用哈希或校验和。有一些简单的方法可以做到这一点,但我认为最简单的方法是在你的类中有一个string hash属性,然后在位图/二进制字符串/你存储它的任何容器上调用GetHashCode()将它设置为classes属性,根据该值检查当前哈希码,看是否有任何更改。您也可以编写自己的小校验和功能,或从(我敢肯定)大量第三方选项中选择。