canvas教程

Android涂鸦技术及刮刮乐示例分析(2)

字号+ 作者:H5之家 来源:H5之家 2016-03-27 12:00 我要评论( )

private void drawPath() {mFingerPaint.setStyle(Paint.Style.STROKE);// 设置两张图片相交时的模式(取下层绘制非交集部分)mFingerPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));mCanvas.d

private void drawPath() { mFingerPaint.setStyle(Paint.Style.STROKE); // 设置两张图片相交时的模式(取下层绘制非交集部分) mFingerPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); mCanvas.drawPath(mPath, mFingerPaint); }
测量和绘制过程如下:

@Override protected void onDraw(Canvas canvas) { canvas.drawText(mText, getWidth() / 2 - mTextBound.width() / 2, getHeight() / 2 + mTextBound.height() / 2, mBackPint); if (!isComplete) { drawPath(); canvas.drawBitmap(mBitmap, 0, 0, null); } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int width = getMeasuredWidth(); int height = getMeasuredHeight(); // 初始化bitmap mBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888); mCanvas = new Canvas(mBitmap); // 绘制遮盖层 mFingerPaint.setStyle(Paint.Style.FILL); mCanvas.drawRoundRect(new RectF(0, 0, width, height), 30, 30, mFingerPaint); mCanvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.mask), null, new RectF(0, 0, width, height), null); }
此外还有一篇也是使用了此技术的博客,点击这里进行查看。


  效果图



源码下载:


 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • html5canvas核心技术图形、动画与游戏开发源码

    html5canvas核心技术图形、动画与游戏开发源码

    2017-05-02 17:42

  • Canvas与ValueAnimator

    Canvas与ValueAnimator

    2017-04-28 18:00

  • Android Bitmap和Canvas学习笔记(转)

    Android Bitmap和Canvas学习笔记(转)

    2017-04-28 17:00

  • 21天学习android开发教程之SurfaceView与多线程的混搭

    21天学习android开发教程之SurfaceView与多线程的混搭

    2017-04-27 12:00

网友点评
d