我们如何将画布上的绘图与Android中的预定义图像进行比较?

时间:2012-04-13 11:32:13

标签: android xml canvas drawing

我正在开发一个开发Android应用程序的项目。我需要让用户绘制预定义的虚线图像,并显示所得图形与虚线图像的百分比。 例如,虚线“A”,用户在虚线“A”上完全绘制叠加,将显示100%的完成。

1 个答案:

答案 0 :(得分:1)

您可以使用Alpha遮罩。我将使用你的例子并进一步解释。

一般的想法是插入一个隐藏的掩码,该掩码基本上是一个具有预定义区域的图像,该区域被计为正确的轨迹。您可以使用颜色定义该区域,例如红色。

所以现在你有了一张红色的图像A.你在虚线上叠加了这个图像并使它透明(alpha通道)。当用户绘制时,您所要做的就是检查触摸事件是否与隐藏层的红色像素位于相同的位置。如果是,那意味着用户正在追踪该行。

如果您不想使用Alpha通道,那么您可以创造性地以不同的方式进行操作。如果我在你的位置,我只会创建一个正常的图像(不需要alpha通道)它甚至可以是灰度级(甚至可以提高内存效率)并在其上绘制不同的蒙版。

e.g。 我希望用户追踪2个字母:A和B.我打开任何基本的图像编辑软件。创建一个灰度图像,其大小与应检测到touchevents的区域完全相同。绘制颜色值为100(灰色)的字母A,然后绘制颜色值为50(深灰色)的字母B.保存图像。

在应用程序中,您只需加载该图像并将其作为二维阵列保存在内存中。然后你可以使用onTouchevent()回调来获得touchevent位置。因此,例如,如果用户在位置(120,240)触摸屏幕,您所要做的就是检查先前在位置[120] [240]处加载的图像阵列的值。如果该位置的值为100表示​​用户正在跟踪字母A,则如果值为50,则用户将跟踪字母B.其他值表示用户未正确跟踪。