2

私はアンドロイドアプリを開発するプロジェクトに取り組んでいます。ユーザーが定義済みの破線画像に描画し、結果の描画の割合を破線画像と比較して表示できるようにする必要があります。たとえば、破線「A」、ユーザーが破線「A」にオーバーレイを完全に描画すると、100% の完了が表示されます。

4

1 に答える 1

1

アルファマスキングを使用できます。私はあなたの例を使用して、さらに説明します。

一般的な考え方は、基本的に正しいトレースとしてカウントされる事前定義された領域を持つ画像である隠しマスクを挿入することです。その領域は、赤などの色を使用して定義します。

これで、赤いAの画像ができました。その画像を破線でオーバーレイし、透明にします(アルファチャネル)。ユーザーが描画するときは、タッチイベントが非表示レイヤーの赤いピクセルと同じ位置にあるかどうかを確認するだけです。そうである場合、それはユーザーが線をトレースしていることを意味します。

アルファチャンネルをいじりたくない場合は、創造性を発揮して別の方法でそれを行うことができます。私があなたの代わりにいたら、通常の画像(アルファチャネルは必要ありません)を作成し、グレースケール(メモリ効率がさらに高くなります)にして、さまざまなマスクを描画することもできます。

たとえば、ユーザーにAとBの2文字以上をトレースしてもらいたい。基本的な画像編集ソフトウェアを開いた。タッチイベントを検出する領域とまったく同じサイズのグレースケール画像を作成します。色の値が100(灰色)の文字Aを描画してから、色の値が50(濃い灰色)の文字Bを描画します。画像を保存します。

アプリケーションでは、その画像をロードして、2D配列としてメモリに保持するだけです。次に、onTouchevent()コールバックを使用して、タッチイベントの位置を取得できます。したがって、たとえば、ユーザーが位置(120,240)で画面に触れた場合、あなたがしなければならないのは、位置[120][240]で以前にロードした画像配列の値をチェックすることだけです。その位置の値が100の場合、ユーザーは文字Aをトレースしていることを意味し、値が50の場合、ユーザーは文字Bをトレースしています。他の値は、ユーザーが正しくトレースしていないことを意味します。

于 2012-04-13T11:44:37.100 に答える