如何在canvas android中设置验证?

如何在canvas android中设置验证?,第1张

概述我正在使用画布应用程序,我创建了一个带有颜色选择器,撤消,重做和清除功能的画布,它也工作正常.现在,我想验证用户当前是否在画布上的背景线上绘制一条线. 例如, 我有一个带虚线的背景图像,现在我希望用户在虚线上绘图,我必须验证它是否正确?在画布中是否可以,我该如何处理? 有人可以给出任何关于这个的建议,这对我来说真的很有帮助,我可以继续我的应用程序的下一步,我的代码在这里, public class 我正在使用画布应用程序,我创建了一个带有颜色选择器,撤消,重做和清除功能的画布,它也工作正常.现在,我想验证用户当前是否在画布上的背景线上绘制一条线.

例如,
我有一个带虚线的背景图像,现在我希望用户在虚线上绘图,我必须验证它是否正确?在画布中是否可以,我该如何处理?

有人可以给出任何关于这个的建议,这对我来说真的很有帮助,我可以继续我的应用程序的下一步,我的代码在这里,

public class HomeScreen extends Activity implements colorPickerDialog.OncolorChangedListener {    public int wIDth;    public int height;    public Arrays paths1;    private Bitmap mBitmap;    private Canvas mCanvas;    private Path mPath;    private Paint mBitmapPaint;    Context context;    private Paint circlePaint;    private Path circlePath;    /* MyVIEw mv; */    DrawingPanel dp;    AlertDialog dialog;    private ArrayList<Path> undonePaths = new ArrayList<Path>();    private ArrayList<Path> paths = new ArrayList<Path>();    FrameLayout frmlayout;    Canvas canvas;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_home_screen);        dp = new DrawingPanel(this);        frmlayout = (FrameLayout) findVIEwByID(R.ID.frameLayout);        frmlayout.addVIEw(dp);        ((button) findVIEwByID(R.ID.Clear)).setonClickListener(new OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                paths = new ArrayList<Path>();                if (paths != null)                    paths.clear();                if (dp != null)                    dp.invalIDate();            }        });        ((button) findVIEwByID(R.ID.Undo)).setonClickListener(new OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                // Todo auto-generated method stub                if (paths.size() > 0) {                    undonePaths.add(paths.remove(paths.size() - 1));                    dp.invalIDate();                }            }        });        ((button) findVIEwByID(R.ID.Redo)).setonClickListener(new OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                // Todo auto-generated method stub                if (undonePaths.size() > 0) {                    paths.add(undonePaths.remove(undonePaths.size() - 1));                    dp.invalIDate();                }            }        });        ((button) findVIEwByID(R.ID.letters)).setonClickListener(new OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                // Todo auto-generated method stub                startActivity(new Intent(HomeScreen.this,Letters.class));            }        });        ((button) findVIEwByID(R.ID.color)).setonClickListener(new OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                // Todo auto-generated method stub                  mCanvas=new Canvas();                new colorPickerDialog(HomeScreen.this,HomeScreen.this,mPaint.getcolor()).show();            }        });        dp.setDrawingCacheEnabled(true);        Bundle extras = getIntent().getExtras();        Integer username;        if (extras != null) {            username = extras.getInt("name");            // and get whatever type user account ID is        }        dp.setBackgroundResource(R.drawable.atemplate);// set the back        // ground if you wish        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(20);        memboss = new embossMaskFilter(new float[] { 1,1,1 },0.4f,6,3.5f);        // mBlur = new BlurMaskFilter(8,BlurMaskFilter.Blur.norMAL);    }    private Paint mPaint;    private MaskFilter memboss;    private MaskFilter mBlur;    public voID colorChanged(int color) {        mPaint.setcolor(color);    }    public class DrawingPanel extends VIEw implements OntouchListener {        private Canvas mCanvas;        private Path mPath;        private Paint mPaint,circlePaint,outercirclePaint;        // private ArrayList<Path> undonePaths = new ArrayList<Path>();        private float xleft,xright,xtop,xbottom;        public DrawingPanel(Context context) {            super(context);            setFocusable(true);            setFocusableIntouchMode(true);            this.setontouchListener(this);            circlePaint = new Paint();            mPaint = new Paint();            outercirclePaint = new Paint();            outercirclePaint.setAntiAlias(false);            circlePaint.setAntiAlias(false);            mPaint.setAntiAlias(false);            mPaint.setcolor(0xFF000000);            outercirclePaint.setcolor(0x44FFF000);            circlePaint.setcolor(0xF57F35);            outercirclePaint.setStyle(Paint.Style.FILL_AND_stroke);            circlePaint.setStyle(Paint.Style.FILL);            mPaint.setStyle(Paint.Style.stroke);            mPaint.setstrokeJoin(Paint.Join.MITER);            mPaint.setstrokeCap(Paint.Cap.ROUND);            mPaint.setstrokeWIDth(10);            outercirclePaint.setstrokeWIDth(10);            mCanvas = new Canvas();            mPath = new Path();            paths.add(mPath);        }        public voID colorChanged(int color) {            mPaint.setcolor(color);        }        @OverrIDe        protected voID onSizeChanged(int w,int h,int olDW,int oldh) {            super.onSizeChanged(w,h,olDW,oldh);        }        @OverrIDe        protected voID onDraw(Canvas canvas) {            for (Path p : paths) {                canvas.drawPath(p,mPaint);            }        }        private float mX,mY;        private static final float touch_TolERANCE = 0;        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 = 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,mPaint);            // kill this so we don't double draw            mPath = new Path();            paths.add(mPath);        }        @OverrIDe        public boolean ontouch(VIEw arg0,MotionEvent event) {            float x = event.getX();            float y = event.getY();            switch (event.getAction()) {            case MotionEvent.ACTION_DOWN:                // if (x <= cx+circleRadius+5 && x>= cx-circleRadius-5) {                // if (y<= cy+circleRadius+5 && cy>= cy-circleRadius-5){                // paths.clear();                // return true;                // }                // }                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;        }    }}
解决方法 您是否正在考虑创建一个类似于模式锁定器的应用程序,它们在AndroID设备中,尝试以这种方式实现.
@OverrIDepublic boolean ontouchEvent(MotionEvent event) {    // MotionEvent object holds X-Y values    if(event.getAction() == MotionEvent.ACTION_DOWN) {        String text = "You click at x = " + event.getX() + " and y = " + event.getY();        Toast.makeText(this,text,Toast.LENGTH_LONG).show();    }    return super.ontouchEvent(event);}

this link may help

总结

以上是内存溢出为你收集整理的如何在canvas android中设置验证?全部内容,希望文章能够帮你解决如何在canvas android中设置验证?所遇到的程序开发问题。

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

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

原文地址:https://54852.com/web/1138848.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存