我正在开发一个 android 应用程序的项目。我需要让用户在预定义的虚线图像上绘图,并显示结果绘图与虚线图像的百分比。例如,虚线“A”,用户在虚线“A”上完全绘制覆盖,将显示100%的完成。
1 回答
您可以使用 Alpha 遮罩。我将使用您的示例并进一步解释。
一般的想法是插入一个隐藏的掩码,它基本上是一个具有预定义区域的图像,该区域算作正确的轨迹。您可以使用颜色来定义该区域,例如红色。
所以现在您有一个带有红色 A 的图像。您将该图像覆盖在虚线上并使其透明(alpha 通道)。当用户绘图时,您所要做的就是检查触摸事件是否与隐藏层的红色像素处于相同的位置。如果是,则意味着用户正在跟踪线路。
如果您不想弄乱 Alpha 通道,您可以发挥创意并以不同的方式进行操作。如果我在你的位置,我只会创建一个普通图像(不需要 alpha 通道),它甚至可以是灰度图像(这甚至会更节省内存)并在其上绘制不同的蒙版。
例如,我希望用户追踪两个字母:一个 A 和一个 B。我打开任何基本的图像编辑软件。创建与应检测到触摸事件的区域大小完全相同的灰度图像。绘制一个颜色值为 100(灰色)的字母 A,然后绘制一个颜色值为 50(深灰色)的字母 B。保存图像。
在应用程序中,您只需加载该图像并将其作为二维数组保存在内存中。然后您可以使用onTouchevent()回调来获取 touchevent 位置。因此,例如,如果用户在位置 (120,240) 触摸屏幕,您所要做的就是检查您之前在位置 [120][240] 加载的图像数组的值。如果该位置的值为 100,则表示用户正在跟踪字母 A,如果值为 50,则用户正在跟踪字母 B。其他值表示用户未正确跟踪。