canvas教程

Android canvas用法介绍之save()和restore()

字号+ 作者:H5之家 来源:H5之家 2018-03-29 14:05 我要评论( )

一. 首先讲一下canvas的save 和 restore功能. 这是canvas很有魅力的一个部分. onDraw方法会传入一个Canvas对象,它是你用来绘制控件视觉界面的画布。 在onDraw方

一. 首先讲一下canvas的save 和 restore功能. 这是canvas很有魅力的一个部分.

onDraw方法会传入一个Canvas对象,它是你用来绘制控件视觉界面的画布。

  在onDraw方法里,我们经常会看到调用save和restore方法,它们到底是干什么用的呢?

  ❑ save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。

  ❑ restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。

  save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。save和restore之间,往往夹杂的是对Canvas的特殊操作。

  例如:我们先想在画布上绘制一个右向的三角箭头,当然,我们可以直接绘制,另外,我们也可以先把画布旋转90°,画一个向上的箭头,然后再旋转回来(这种旋转操作对于画圆周上的标记非常有用)。然后,我们想在右下角有个20像素的圆,那么,onDraw中的核心代码是:

  int px = getMeasuredWidth();   int py = getMeasuredWidth();   // Draw background   canvas.drawRect(0, 0, px, py, backgroundPaint);   canvas.save();   canvas.rotate(90, px/2, py/2);

这里注意一下, rotate后面必须是getMeasuredWidth()和getMeasuredHeight()..具体为什么我也不太清楚..

  // Draw up arrow   canvas.drawLine(px / 2, 0, 0, py / 2, linePaint);   canvas.drawLine(px / 2, 0, px, py / 2, linePaint);   canvas.drawLine(px / 2, 0, px / 2, py, linePaint);   canvas.restore();   // Draw circle   canvas.drawCircle(px - 10, py - 10, 10, linePaint);

 

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

相关文章
  •  canvas对象入门

    canvas对象入门

    2018-03-29 14:12

  • 10h搞定canvas基础系列(canvas零基础入门教程)

    10h搞定canvas基础系列(canvas零基础入门教程)

    2018-03-29 10:10

  • HTML5学习笔记(一)canvas画图

    HTML5学习笔记(一)canvas画图

    2018-03-12 17:01

  • 基于HTML5 Canvas的客户端图表技术研究

    基于HTML5 Canvas的客户端图表技术研究

    2018-03-12 13:08

网友点评
>