ベクトル ベースの描画プログラムを作成していますが、ラスター ベースのツールのように動作する描画ツールが必要です。たとえば、グラフィック タブレット ペンで描画すると、結果として得られるベクター ストロークは、筆圧の違いも含めて、実際には塗りつぶされます。ベクトル曲線は、ストロークの外側にちょうど収まります。また、消しゴムを手に取り、このストロークの一部を消去すると、正確に消去した場所だけが消去されます。ベクトル ポイントを削除するだけでなく、必要な場所に新しいポイントを作成します。これらのペンと消しゴムのストロークは、外側のアウトラインだけでなく、中央の穴も含む、任意のジオメトリになります。
これを行う方法について長い間戸惑いましたが、昨夜、ペン入力をオフスクリーン ビットマップ (各ピクセルは 1 ビットであり、ペン ストロークによってタッチされているかどうかに関係なく) に描画し、ストロークがプログラムはこのビットマップをベクトル化し、適切な色で塗りつぶすベクトルを配置するか、その下のベクトルでブール演算を実行して消去します。
ラスター描画ツールを使用してこれを機能させることができます(透明度を使用して描画している場合、目に見える表面に常に線を描画する必要がなくなります)が、どのように適合するかわかりませんこの 1 ビット ビットマップへのベクトル曲線。操作は高速である必要がありますが、ペンを持ち上げた後に 1 回実行されるため、リアルタイムではありません。また、ジオメトリを記述するために必要な最小数のベジェ カーブ ポイントのみが使用されるように、最適化されたジオメトリを作成する必要があります。
これを行う方法についての提案、解決策、指針、または参考文献はありますか? または、別の方法がありますか?