2

AndroidSDKのFingerPaintの例に似たアプリケーションを作成しようとしています。私は自分のテストアプリにUndo/Redo機能を実装しようとしていて、この質問で受け入れられた答えを使用しました: Android FingerPaint Undo/Redo実装

そこにある例は機能していますが、私が気付いた奇妙なことがあります。たとえば、ボタンのクリックで消しゴムモードを選択した場合、デフォルトの実装は消しゴムのように機能しますが、onDraw()上記の質問のように使用しても、これは実行されません。通常のブラシのように機能し、黒のストロークで描画する代わりに(指定された色によって異なります)。

たとえば、現在のブラシに別の効果を追加しようとすると、15本の線を描画し、その後[ぼかしの追加]オプションを選択します。新しいブラシを描画した後、前のすべての線もぼかします。

            if (mPaint.getMaskFilter() != mBlur) {
                mPaint.setMaskFilter(mBlur);
            } else {
                mPaint.setMaskFilter(null);
            }
            return true;

だから私の質問は..古い行を新しい行から分離し、それらにのみ効果を設定し、本来あるべきクリアモードを使用するにはどうすればよいですか?

どんな種類の助けにも感謝します!

4

1 に答える 1

0

パス オブジェクトを保持するだけでなく、次のようなオブジェクトで履歴を保持することをお勧めします。

class pathInfo {
    Path mPath;
    int  mStyle;
    boolean mbAntiAlias; 
    ....
}

次に、各パスを描画しながら、これらのオブジェクトから対応する各情報を選択します

protected void onDraw(Canvas canvas) {            

    for (PathInfo p : pathsInfo){
        mPaint.setStyle(p.mStyle);
        ....
        canvas.drawPath(p.mPath, mPaint);
    }

}
于 2012-05-14T12:07:30.210 に答える