如何清除手指画? [英] How to clear finger paint?

查看:182
本文介绍了如何清除手指画?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来的机器人,我prepared用手指FingerPaint.java的帮助阿比Demo.It工作正常一幅画视图。

I am new to android,i prepared one painting view using finger with help of FingerPaint.java in Api Demo.It is working fine.

同样的观点包含一个按钮(清除),如果我们的按钮漆点击就清楚(空sceen和一个按钮)。我的问题是如何清除paint.My视图code是,

The same view contains one button(clear),if we click on button paint will be clear(empty sceen and one button).My problem is how to clear the paint.My view code is,

public class MyDraw extends View {

    Paint mPaintAlphabet = new Paint();

    private static final float MINP = 0.25f;
    private static final float MAXP = 0.75f;

    float x, y;
    float mX, mY;
    private static final float TOUCH_TOLERANCE = 4;

    private Bitmap mBitmap;
    Canvas mCanvas;
    Path mPath;
    Paint mBitmapPaint;

    public MyDraw(Context context) {
        super(context);

        mBitmap = Bitmap.createBitmap(320, 480, Bitmap.Config.ARGB_8888);
        mCanvas = new Canvas(mBitmap);
        mPath = new Path();
        mBitmapPaint = new Paint(Paint.DITHER_FLAG);


    }

    public MyDraw(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);

        mBitmap = Bitmap.createBitmap(480, 480, Bitmap.Config.ARGB_8888);
        mCanvas = new Canvas(mBitmap);
        mPath = new Path();
        mBitmapPaint = new Paint(Paint.DITHER_FLAG);

        mPaintAlphabet.setDither(true);
        mPaintAlphabet.setColor(0xFFFF0000);
        mPaintAlphabet.setStyle(Paint.Style.STROKE);
        mPaintAlphabet.setStrokeJoin(Paint.Join.ROUND);
        mPaintAlphabet.setStrokeCap(Paint.Cap.ROUND);
        mPaintAlphabet.setStrokeWidth(3);
        mPaintAlphabet.setTextSize(350);

    }

    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
    }

    public void onDraw(Canvas canvas) {

            if (MyAlphabetsActivity.mArryLstAlphabets.get(
                MyAlphabetsActivity.mAlphaIndex).equals("I")) {

            canvas.drawText((String) MyAlphabetsActivity.mArryLstAlphabets
                    .get(MyAlphabetsActivity.mAlphaIndex), 180, 300,
                    mPaintAlphabet);

        } else if (MyAlphabetsActivity.mArryLstAlphabets.get(
                MyAlphabetsActivity.mAlphaIndex).equals("J")) {

            canvas.drawText((String) MyAlphabetsActivity.mArryLstAlphabets
                    .get(MyAlphabetsActivity.mAlphaIndex), 180, 300,
                    mPaintAlphabet);

        } else {
            canvas.drawText((String) MyAlphabetsActivity.mArryLstAlphabets
                    .get(MyAlphabetsActivity.mAlphaIndex), 120, 300,
                    mPaintAlphabet);
        }

        System.out.println("in on draw");
        System.out.println("path is----" + mPath);

        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);

        canvas.drawPath(mPath, MyAlphabetsActivity.mPaint);
    }

    private void touch_start(float x, float y) {
        mPath.reset();
        System.out.println("mPath-----"+mPath);
        mPath.moveTo(x, y);
        mX = x;
        mY = y;
    }

    private void touch_move(float x, float y) {
        float dx = Math.abs(x - mX);
        float dy = Math.abs(y - mY);
        if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
            mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
            mX = x;
            mY = y;
        }
    }

    private void touch_up() {
        mPath.lineTo(mX, mY);
        // commit the path to our offscreen
        mCanvas.drawPath(mPath, MyAlphabetsActivity.mPaint);
        // kill this so we don't double draw
        mPath.reset();
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        x = event.getX();
        y = event.getY();

        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            touch_start(x, y);
            invalidate();
            break;
        case MotionEvent.ACTION_MOVE:
            touch_move(x, y);
            invalidate();
            break;
        case MotionEvent.ACTION_UP:
            touch_up();
            invalidate();
            break;
        }
        return true;
    }


}

和我的活动code是,

And my Activity code is,

public class MyAnimViewActivity extends Activity
         {    
    public static Paint       mPaint;
    private MaskFilter  mEmboss;
    private MaskFilter  mBlur;
    Button mBtnClear;
    MyDraw mMyDraw=new MyDraw();
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new MyOwnView(this));

        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setDither(true);
        mPaint.setColor(0xFFFF0000);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap(Paint.Cap.ROUND);
        mPaint.setStrokeWidth(12);

        mEmboss = new EmbossMaskFilter(new float[] { 1, 1, 1 },
                                       0.4f, 6, 3.5f);

        mBlur = new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL);

        mBtnClear=(Button)findViewById(R.id.btnClear);

        mBtnClear.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                switch (v.getId()) {
                case R.id.btnClear:
                    mMyDraw.mPath.reset();

                    break;

                }
            }
        });
    }
}

请帮忙me..Thanks提前

Please help me..Thanks in advance

推荐答案

作出公开功能命名为clearDrawing您的自定义拉丝级();写这样的:

make a public function in your custom drawing class named as clearDrawing(); and write this:

mBitmap = null;
mPath = null;
mBitmap = Bitmap.createBitmap(480, 480, Bitmap.Config.ARGB_8888);
mPath = new Path();

现在叫clearDrawing()重置绘图控制。

now call clearDrawing() to reset drawing control.

这篇关于如何清除手指画?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆