android – 带有PorterDuff.Mode.CLEAR的橡皮擦总是绘制一条黑线,我要删除

android – 带有PorterDuff.Mode.CLEAR的橡皮擦总是绘制一条黑线,我要删除,第1张

概述我可以画它的路径,我用手指移动用透明线删除,或者根本不画画? 这是我实例化我的橡皮擦的方式: OnClickListener eraseListener = new OnClickListener() { @Override public void onClick(View v) { mPaint.setColor(0x00000000); 我可以画它的路径,我用手指移动用透明线删除,或者根本不画画?

这是我实例化我的橡皮擦的方式:

OnClickListener eraseListener = new OnClickListener() {        @OverrIDe        public voID onClick(VIEw v) {            mPaint.setcolor(0x00000000);            mPaint.setXfermode(clear);            mPaint.setAlpha(0x00);            myVIEw.setPaint(mPaint);            LogService.log("PaintActivity","------in eraseListener");        }    };

这将从包含画布的VIEw中设置绘画.
在这里,我有以下动议事件:

private voID touch_start(float x,float y) {    mPath.reset();    mPath.moveto(x,y);    mX = x;    mY = y;}private voID touch_move(float x,float y) {    float dx,dy;        dx = Math.abs(x - mX);        dy = Math.abs(y - mY);    if ((dx >= touch_TolERANCE) || (dy >= touch_TolERANCE)) {        undoPath.quadTo(mX,mY,(x + mX) / 2,(y + mY) / 2);        mPath.quadTo(mX,(y + mY) / 2);            mX = x;            mY = y;    }}private voID touch_up() {    mPath.lineto(mX,mY);    mPath.moveto(mX,mY);    canvas.drawPath(mPath,paint);    mPath.reset();}public boolean ontouchEvent(MotionEvent event) {    float x = event.getX();    float y = event.getY();    switch (event.getAction()) {    case MotionEvent.ACTION_DOWN:        touch_start(x,y);        break;    case MotionEvent.ACTION_MOVE:        touch_move(x,y);        invalIDate();        break;    case MotionEvent.ACTION_UP:        touch_up();        invalIDate();        break;    }    return true;}

现在,如果我想要擦除,就像我说的那样,当我移动我的手指时,它会在该路径上画一条黑线.当我把手指拉下来时,在touch_up上,它会擦除​​它所绘制的黑线背面的内容.如果我评论invalIDate();从touch_move函数行,然后它不会绘制那条黑线,而且,它只会在touch_up上擦除.我不能让它实时擦除吗?

解决方法 我这样解决了:

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,(y + mY) / 2);        mPath.lineto(mX,mY);        // commit the path to our offscreen        mCanvas.drawPath(mPath,mPaint);        mPath.reset();        mPath.moveto(mX,mY);        mX = x;        mY = y;    }}

在这里,我在路径中添加了一条线,绘制了路径,重置了路径并在touch_move方法中使用了moveto.

在touch_up上我只使用mPath.reset().

private voID touch_up() {    // kill this so we don't double draw     mPath.reset();}

这使我的橡皮擦透明 – 擦除时没有黑线画.

总结

以上是内存溢出为你收集整理的android – 带有PorterDuff.Mode.CLEAR的橡皮擦总是绘制一条黑线,我要删除全部内容,希望文章能够帮你解决android – 带有PorterDuff.Mode.CLEAR的橡皮擦总是绘制一条黑线,我要删除所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1123422.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存