2009-07-02 69 views
1

我正在使用WPF InkCanvas控件来捕获Tablet PC应用程序中的签名。WPF InkCanvas - 如何确定它是否已被“签名”

我的一个要求是验证应用程序是否真的“签名”。现在我通过检查InkCanvas的Strokes集合来做到这一点 - 如果有0个笔画,那么我知道用户没有“签名”。

但是,如果用户输入一个斜杠,甚至单个点,则这将算作笔画,并且我的验证测试将通过,即使签名不是真正有效。

有关如何为此构建更好测试的任何想法?当然,对于什么是和不是有效签名的用例相当模糊,但我想尝试消除明显不好的签名。

或者这是简单地以任何直接的方式无法解决?

回答

1

我知道有算法来测试签名是否与现有签名有效匹配,如here所述。但是,首先查明某件事是否是签名似乎要复杂得多。

维基百科:

法律文件,一个目不识丁的签署可以使一个“标记”(通常为“X”,但偶尔也有个性化的符号)
...
几种文化,其语言使用除字母之外的写作系统不共享西方的签名概念本身:对姓名的“签名”导致书面产品与以标准方式“写”姓名的结果没有区别。对于这些语言,编写或签名涉及相同的书面字符。三个这样的例子是中文,日文和韩文。

虽然这可以通过使用Intelligent Character Recognition来解决,但我也知道我的签名很少看起来像它里面有任何字符。如果我使用UPS或FedEx包装唱盘中的一种,情况会更糟糕。下一次一个包到达,但我会尝试用短划线和点来签名,看看它是否允许(我认为它会允许,因为它已经足够接近)。

因为签名可能不匹配任何可识别的单词或字符,试图进一步“验证”它,那么您目前实际上可能会放弃一些有效的签名。如果由于某种原因,你仍然需要知道是否还有点以外的东西,那么看一下验证,而不是签名填充一个特定大小的矩形。这仍然可能会导致不应该的结果失效,因此如果您尝试添加任何验证,请确保完整记录有效签名的期望。