ユーザーが1ピクセルの精度でシングルタッチデバイスを使用してキャンバスに「書き込む」ことができるモバイルアプリ(Android)を作成しています。アプリは、およそ標準的な 8 1/2" x 11" サイズのタブレット デバイスで実行されます。私の戦略は、「テキスト」をベクトル データとして保存することです。入力デバイスの各ストロークは、基本的に、始点、終点、およびテキストの形状を定義するのに役立ついくつかの中間点で構成されるベクトルになります。ベクトル (タッチ移動時にタッチスクリーン/OS によって生成されます)。これにより、ストロークが配置された順序を追跡し(元に戻すなどをサポートするため)、このテキストのサイズを変更したり、他のベクターグラフィックスと同様に柔軟にすることができます。
ただし、非常に正確な入力デバイスと、標準の紙のメモ帳を 1 対 1 でエミュレートできる大画面を使用して、非常に大まかな封筒計算を行うと、1 ページ全体で最大 1,700 ストロークになることになります。文章。最悪の場合、各ストロークは最大 20 ~ 30 個の個別のポイント (ストロークのピクセルごとにポイント) で構成される可能性があり、これはページあたり最大 50,000 データ ポイントを意味します... SQLite には大きすぎますページがリロードされ、ベクター ストロークが再作成されているときに信頼性を期待して処理するための /Android (SQLite db から 50,000 以上の結果を取得すると、 CursorWindowの制限である 1Mb を超えると想像する必要があります) 。
データ取得を複数のクエリに分割したり、開始、終了、またはその他の中間ピクセルから X ピクセルを超える場合にストローク ベクター形状を定義するのに役立つ中間点のみを追加するようにストローク データを変更できることはわかっています。 、しかし、この戦略を根本から再考する必要があるかどうか疑問に思っています...
より効率的な方法でこの問題に取り組む方法について何か提案はありますか?
ありがとう!
ポール