zoukankan      html  css  js  c++  java
  • 5月2日学习日志

    今天学习了简单的画板的制作。

    代码为:

    public class MyView extends View{
    
        private Paint mPaint;  //绘制线条的Path
        private Path mPath;      //记录用户绘制的Path
        private Canvas mCanvas;  //内存中创建的Canvas
        private Bitmap mBitmap;  //缓存绘制的内容
    
        private int mLastX;
        private int mLastY;
    
        public MyView(Context context) {
            super(context);
            init();
        }
    
        public MyView(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
        public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            init();
        }
    
        private void init(){
            mPath = new Path();
            mPaint = new Paint();   //初始化画笔
            mPaint.setColor(Color.GREEN);
            mPaint.setAntiAlias(true);
            mPaint.setDither(true);
            mPaint.setStyle(Paint.Style.STROKE);
            mPaint.setStrokeJoin(Paint.Join.ROUND); //结合处为圆角
            mPaint.setStrokeCap(Paint.Cap.ROUND); // 设置转弯处为圆角
            mPaint.setStrokeWidth(20);   // 设置画笔宽度
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            int width = getMeasuredWidth();
            int height = getMeasuredHeight();
            // 初始化bitmap,Canvas
            mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
            mCanvas = new Canvas(mBitmap);
        }
    
        //重写该方法,在这里绘图
        @Override
        protected void onDraw(Canvas canvas) {
            drawPath();
            canvas.drawBitmap(mBitmap, 0, 0, null);
        }
    
        //绘制线条
        private void drawPath(){
            mCanvas.drawPath(mPath, mPaint);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
    
            int action = event.getAction();
            int x = (int) event.getX();
            int y = (int) event.getY();
    
            switch (action)
            {
                case MotionEvent.ACTION_DOWN:
                    mLastX = x;
                    mLastY = y;
                    mPath.moveTo(mLastX, mLastY);
                    break;
                case MotionEvent.ACTION_MOVE:
                    int dx = Math.abs(x - mLastX);
                    int dy = Math.abs(y - mLastY);
                    if (dx > 3 || dy > 3)
                        mPath.lineTo(x, y);
                    mLastX = x;
                    mLastY = y;
                    break;
            }
    
            invalidate();
            return true;
        }
    }
  • 相关阅读:
    解决前端从url路径上拿到的中文乱码
    仪表盘双层结构图
    element ui 按钮显示
    vue在手机上运行,打包之后显示
    echarts使用遇到的一些问题总结,比如颜色改变,文字位置调整
    微信小程序地图移动到指定的位置
    微信小程序多边形地图显示
    button取消边框
    代码审计小记 (一)
    [root-me](web-client)write up 一个大坑怎么填啊
  • 原文地址:https://www.cnblogs.com/20193925zxt/p/14910499.html
Copyright © 2011-2022 走看看